Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в файл [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо