Главная страница
    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.46 MB
Время: 0.053 c
1-1106306254
Su-+
2005-01-21 14:17
2005.02.06
Щрифты


1-1106498375
Grigoryan
2005-01-23 19:39
2005.02.06
Показывать окно с сообщением сразу после появления главного окна


3-1104398535
aztech
2004-12-30 12:22
2005.02.06
Отключаю ADOTable входит ошибка EOF и BOF true?


1-1106346599
mikel
2005-01-22 01:29
2005.02.06
TPaintBox


4-1103546978
lovres
2004-12-20 15:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский