Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Запись в файл   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.057 c
1-1106221314
Dimedrol
2005-01-20 14:41
2005.02.06
Как записать XLS-файл ?


1-1106651082
GanibalLector
2005-01-25 14:04
2005.02.06
ООП


14-1106019766
Думкин
2005-01-18 06:42
2005.02.06
С Днем Рождения! 18 января


4-1103095551
Змей
2004-12-15 10:25
2005.02.06
Create Tform


9-1099593515
ОлегЪ
2004-11-04 21:38
2005.02.06
Генерация ландшафта