با سلام و عرض ادب
یک فایل یونیکد(هر کارکتر 2 بایت) رو خونده ام و کارکترهایی برای انتهای سطر اضافه کرده ام و جهت نوشتن عدد رو تغییر دادم و در Memo دلفی یونیکد(XE8) نمایش داده ام(کارکترهای عجیب هم داره که بعضی رو خودم طراحی کردم!)
میخوام متن Memo رو با حذف انتهای سطر و برگردادن عدد به حالت اول ، در فایل بنویسم. نتیجه نهایی نصف حجم رو داره!
ظاهرا Utf8 ذخیره میشه(اینجا گفته شده utf8 یونیکد هست!) ولی حجم نصف هست و متن فایل پر از کارکتر خط نیره و حروف انگلیسی میشه.
Untitled.jpg
فکر کردم بهتره روش ذخیره ام رو هم توضیح بدم. هر دو روش زیر شکست خوردند (اما ذخیره بدون تغییر متن Memo داخل تصویر بالا، حجم رو نصف نمی کنهMemo1.Lines.SaveToFile(FileName)!):
روش اول ایجاد یک Memo مخفی روی فرم و اجرای کد زیر(S:متن تغییر یافته!):
Memo2.Lines.Text:=S;
Memo2.Lines.SaveToFile(FileName);
روش دوم:
SaveStr(FileName,S);
procedure SaveStr(FileName:String;S:String);
Var
F:File;
begin
AssignFile(F,FileName);
ReWrite(F,1);
Seek(F,0);
BlockWrite(F,Pointer(S)^,Length(S));
CloseFile(F);
end;





پاسخ با نقل قول