Много лишнего, поэтому и не правильно работает, зачем переносить строку в массив, не проще ли сразу писать в файл из памяти?
вот примерная реализация, поддерживает WideString:
| Код | procedure SaveToFile(const aText: string); var mFile: THandle; mSize: Cardinal; mRe: Cardinal; begin mSize := Length(aText) * SizeOf(Char); if mSize > 0 then begin mFile := CreateFile('log.bin', $40000000, 2, nil, 2, 128, 0); WriteFile(mFile, mSize, SizeOf(Cardinal), mRe, nil); WriteFile(mFile, aText[1], mSize, mRe, nil); CloseHandle(mFile); end; end;
function LoadFromFile: string; var mFile: THandle; mSize: Cardinal; mRe: Cardinal; begin mFile := CreateFile('log.bin', $40000000, 2, nil, 2, 128, 0); ReadFile(mFile, mSize, SizeOf(Cardinal), mRe, nil); SetLength(Result, mSize div SizeOf(Char)); ReadFile(mFile, Result[1], mSize div SizeOf(Char) * SizeOf(Char), mRe, nil); CloseHandle(mFile); end;
|
|