![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в файл [D6]
ser_max © (2005-01-23 00:43:00)Привет ALL! Тут такой вопрос : имеется файл с текстом (.txt), мне надо
1) записать в начало этого файла по строкам свой текст (f: file of string - выдаёт ошибку при компилировании..а по другому шо-то не получается писать)
2) записать в определённую позицию исходного текста свой текст.
Мне тут говорилИ, что надо просто копирнуть из файла текст и создат ьновый файл - но как-то долго и мутно...как быть?
Всем спасибо!
Leonid Troyanovsky (2005-01-23 02:34:00) [1]
> SergP © (23.01.05 02:08) [2]
> Вот тупой способ, но может пригодится:
with TFileStream.Create(..) do
try
Write(s[1], Length(s)); // вставка
CopyFrom(SourceFileStream); // остаток
finally
Free;
end;
--
Regards, LVT
GanibalLector (2005-01-23 02:10:00) [2]> Более экономный способ (по расходу памяти)
Более экономичный способ,это на АПИ. Дешево и сердито!
SergP (2005-01-23 02:08:00) [3]Вот тупой способ, но может пригодится:
procedure SaveToFile(const FileName: string; const s:string);
begin
with TFileStream.Create(FileName, fmCreate) do
try
WriteBuffer(Pointer(S)^, Length(S));
finally
Free;
end;
end;
function LoadFromFile(const Filename:string):string;
var
SizeStr:integer;
begin
with TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite) do
try
SizeStr := Size - Position;
SetString(Result, nil, SizeStr);
Read(Pointer(Result)^, SizeStr);
finally
Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=LoadFromFile('c:\vasya_pupkin.txt');
Insert('нехороший человек, редиска',s,20);
SaveToFile('c:\vasya_pupkin.txt',s);
end;
Defunct (2005-01-23 01:07:00) [4]1) F: TextFile;
2)
самый простой способ через StringList;
var
List : TStrings;
begin
List := TStringList.Create;
try
List.LoadFromFile('test.txt');
List.Insert(0, 'Вставляем новую строку в начало');
List.SaveToFile('test.txt');
finally
List.Free
end
end;
// Более экономный способ (по расходу памяти) - создавать новый файл
procedure TForm1.Button1Click(Sender: TObject);
var
F1 : TextFile;
F2 : TextFile;
S : String;
begin
AssignFile(F1, '$$temp.txt');
ReWrite(F1);
try
AssignFile(F2, 'test.txt');
try
Reset(F2);
except
ReWrite(F2);
end;
try
S := 'Добавляем эту строку в начало файла';
WriteLn(F1, S);
while not Eof(F2) do
begin
ReadLn(F2, S);
WriteLn(F1, S)
end;
finally
CloseFile(F2);
Erase(F2)
end
finally
CloseFile(F1);
Rename(F1, 'test.txt');
end
end;