1. Открытие файла
function slLoadFromFile(var sl: TStringList; f: string): boolean;
const MaxBufSize = $F000;
var H, Count: integer;
Buffer: PAnsiChar;
Text: AnsiString;
begin
Result:=false;
sl.Clear;
H:=FileOpen(f, fmShareDenyNone);
if H<0 then
Exit;
Result:=true;
Text:='';
FileSeek(H, 0, 0);
GetMem(Buffer, MaxBufSize);
repeat
Count:=FileRead(H, Buffer^, MaxBufSize);
if Count>0 then
Text:=Text+Copy(Buffer, 1, Count);
until Count<=0;
FreeMem(Buffer, MaxBufSize);
FileClose(H);
sl.Text:=String(Text);
end;
где:
sl – переменная типа TStringList , в которую
загружают содержимое файла f ;
f – полное имя открываемого файла.
2. Сохранение файла
function slSaveToFile(var sl: TStringList; f: string): boolean;
const MaxBufSize = $F000;
var H, Count: integer;
Buffer: PAnsiChar;
Text: AnsiString;
begin
Result:=false;
H:=FileCreate(f);
if H<0 then
Exit;
Result:=true;
Text:=AnsiString(sl.Text);
FileSeek(H, 0, 0);
repeat
Buffer:=PAnsiChar(Copy(Text, 1, MaxBufSize));
Count:=Length(Buffer);
if Count>0 then
begin
FileWrite(H, Buffer^, Count);
Text:=Copy(Text, Count+1, Length(Text));
end;
until Count<=0;
FileClose(H);
end;
где:
sl – переменная типа TStringList , из которой
выгружают содержимое файла f ;
f – полное имя сохраняемого файла.
3. Пример
Добавим на форму кнопку Button1 и компонент Memo1 .
При нажатии на данную кнопку открывается файл, его содержимое загружается в
компонент Memo1 (он служит в качестве блокнота), затем сохраняется в
новом файле. Мы видим, что размеры файла совпадают (скопировалось без потери данных).
procedure TForm1.Button1Click(Sender: TObject);
const f1 = 'E:\Delphi.txt';
f2 = 'E:\Delphi2.txt';
var sl: TStringList;
begin
sl:=TStringList.Create;
slLoadFromFile(sl, f1);
Memo1.Text:=sl.Text;
slSaveToFile(sl, f2);
sl.Free;
end;
|