Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Вниз
Запись в файл Найти похожие ветки
← →
ser_max (2005-01-23 00:43) [0]Привет ALL! Тут такой вопрос : имеется файл с текстом (.txt), мне надо
1) записать в начало этого файла по строкам свой текст (f: file of string - выдаёт ошибку при компилировании..а по другому шо-то не получается писать)
2) записать в определённую позицию исходного текста свой текст.
Мне тут говорилИ, что надо просто копирнуть из файла текст и создат ьновый файл - но как-то долго и мутно...как быть?
Всем спасибо!
← →
Defunct © (2005-01-23 01:07) [1]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;
← →
SergP © (2005-01-23 02:08) [2]Вот тупой способ, но может пригодится:
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;
← →
GanibalLector © (2005-01-23 02:10) [3]> Более экономный способ (по расходу памяти)
Более экономичный способ,это на АПИ. Дешево и сердито!
← →
Leonid Troyanovsky © (2005-01-23 02:34) [4]
> SergP © (23.01.05 02:08) [2]
> Вот тупой способ, но может пригодится:
with TFileStream.Create(..) do
try
Write(s[1], Length(s)); // вставка
CopyFrom(SourceFileStream); // остаток
finally
Free;
end;
--
Regards, LVT
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.053 c