با سلام و عرض ادب خدمت دوستان
بنده برنامه ای نوشته ام که یک فایل را می خواند و علامت انتهای خط را حذف کرده در فایل دیگر می ریزد.علاوه بر این پرانتزها را به تناوب باز و بسته می کند(تنها برای اطمینان)
برنامه ام به ظاهر درست کار می کرد ولی بعدها فهمیدم فایل دوم با پرانتز مشکل دارد و بعد فهمیدم که کارکتر اول در تابعی که کارکترها را برای فایل دوم آماده می کند با کارکتر اول وقتی از تابع خارج می شوم متفاوت است.
این هم کد برنامه:

Procedure NoCrLf(Var Buf1,Buf2:Array of Char;Var BytesNo:Integer);
Var
I,N:SmallInt;
S:String;
PBaz:Boolean;
Begin
N:=1;
PBaz:=True;
For I:=1 to BytesNo do
Begin
{Dar Fail 254 fail hast!}
If Pos(Buf1[I],#13#254)>0 then
//Skip
Else If Buf1[I]=#10 then
Begin
Buf2[N]:=#32;
Inc(N);
End
Else If Buf1[I]=#32 then
Begin
If Buf2[N-1]<>#32 then//Start of Row
Begin
Buf2[N]:=#32;
Inc(N);
End;
End
Else If Pos(Buf1[I],')(')>0 then
Begin
//Zahera parantez niaz be dorost kardan darad!
If PBaz=True then
Begin
Buf2[N]:='(';
PBaz:=False;
End
Else
Begin
Buf2[N]:=')';
PBaz:=True;
End;
Inc(N);
End
Else
Begin
Buf2[N]:=Buf1[I];
Inc(N);
End;
End;
ShowMessage(IntToStr(Ord(Buf2[1])));
BytesNo:=N;
End;
procedure TForm1.SaveNoCrLfButClick(Sender: TObject);
Var
F1,F2:File;
Buf1,Buf2:Array[1..32000]of Char;
BytesNo,I:Integer;
begin
AssignFile(F1,'F:\Documents and Settings\Shariyat\Desktop\NoErab.txt');
ReSet(F1,1);
AssignFile(F2,'F:\Documents and Settings\Shariyat\Desktop\NoErabNoEOL.txt');
ReWrite(F2,1);
While not Eof(F1) do
Begin
BlockRead(F1,Buf1,32000,BytesNo);
NoCrLf(Buf1,Buf2,BytesNo);
ShowMessage(IntToStr(Ord(Buf2[1])));
BlockWrite(F2,Buf2,BytesNo);
End;
CloseFile(F1);
CloseFile(F2);
end;

هم وقتی درون تابع که هستم [Buf2[1 را بررسی می کنم و هم وقتی خارج شدم ولی کد اسکی متفاوت است.علتش چیه؟
اگه می شد از آرایه Char استفاده نکنم و از String استفاده کنم بهتر بود.من از آرایه Char استفاده کردم چون جای دیگه ای از برنامه از Pos برای پیدا کردن عبارت در فایل استفاده می کنم!
اگه این مشکل حل نشه با مشکل جدی تو برنامم برخورد می کنم.
لطفا زودتر جواب رو بفرمایین که مساله حل شه.از همه دوستان متشکرم.