Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.45 MB
Время: 0.037 c
1-1106677375
0xfffffff
2005-01-25 21:22
2005.02.06
Добавление своей записи в Add remove programs


14-1105778142
Шишкин Илья
2005-01-15 11:35
2005.02.06
delphibase.endimus.ru


6-1100941387
l.a_
2004-11-20 12:03
2005.02.06
Как отправить файл на почту на чистом Delphi


14-1105724228
Aldor_
2005-01-14 20:37
2005.02.06
"Гюйгенс" прититанился.


9-1098162851
RRAIN
2004-10-19 09:14
2005.02.06
Совместное написание игр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский