PDA

View Full Version : مشکل در درج کاراکترهای فارسی به همراه انگلیسی در یک فایل



rayangostar_co
سه شنبه 24 بهمن 1391, 15:34 عصر
با سلام خدمت دوستان
وقتی تو یه فایل یه رشته ای ر به شکل مثلا (رضا,540,میثم,123','علی') می نویسیم و وقتی فایل و باز می کنیم متن ها از راست write میشن. چطور میشه به همین صورت از چپ به راست ذخیره شن?
با تشکر.


نمونه کد :


procedure TForm1.Button1Click(Sender: TObject);
var
f: Textfile;
i: integer;
begin
strlist := Tstringlist.Create;
strlist := Tstringlist.Create;
strlist.Add(' میثم ');
strlist.Add(' 154200 ');
strlist.Add(' حسین ');
strlist.Add(' 74980 ');
AssignFile(f, 'c:\ek.txt');
ReWrite(f);
for i := 0 to strlist.Count - 1 do
begin
write(f, strlist[i]);
end;
Closefile(f); { Closes file F }
end;

خروجی :

ميثم 154200 حسين 74980

Mask
سه شنبه 24 بهمن 1391, 16:00 عصر
اینا چیه نوشتی:
چرا 2 بار strlist رو ساختی؟
چرا خود strlist رو مستقیم savetofile نمیکنی؟
چرا میریزی تو یه یه textfile؟

rayangostar_co
سه شنبه 24 بهمن 1391, 16:29 عصر
اینا چیه نوشتی:
چرا 2 بار strlist رو ساختی؟
چرا خود strlist رو مستقیم savetofile نمیکنی؟
چرا میریزی تو یه یه textfile؟

حالا شما یه CREATE شو بردار - اشتباهی اینجا PASTE کردم.
در ضمن دوست عزیز اگه از STRLIST هم مستقیما استفاده کنم باز هم همین مشکلو داره .

یوسف زالی
سه شنبه 24 بهمن 1391, 16:45 عصر
یعنی چی؟
فایل ها به همون ترتیبی که ساخته می شن ذخیره می شن دیگه.
ممکنه در نمایش به علت راست چین بودن درست نمایش داده نشن اما با لود شدن در برنامه همونطور که ذخیره شدن دیده خواهند شد.
در ضمن، وقتی از StringList استفاده می کنی نیازی به فایل نیست.
حتی اگر باشه، روش باز کزدن فایل شما روش خیلی قدیمی هست و از رده خارج.

Mask
سه شنبه 24 بهمن 1391, 17:21 عصر
این مشکل به خاطر راست به چپ شدن زبان فارسیه وگرنه واسه انگلیسی مشکلی نیست.
این سمپل رو نگاه کن:

procedure SetTextLeft(FileName:string;Str:string);
var
strlist: TStringList;
begin
strlist := TStringList.Create;
try
if FileExists(FileName) then
strlist.LoadFromFile(FileName);

if strlist.Count=0 then
strlist.Text :=strlist.Text+' '+Str+' '
else
strlist[0] :=strlist[0]+' '+Str+' ';

strlist.SaveToFile(FileName);
finally
strlist.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetTextLeft('c:\1.txt', 'علی');
SetTextLeft('c:\1.txt', '123');
SetTextLeft('c:\1.txt', 'رضا');
SetTextLeft('c:\1.txt', '456');
Memo1.Clear;
Memo1.BiDiMode:=bdRightToLeft;
Memo1.Lines.LoadFromFile('c:\1.txt');
end;