Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > замена части файла


Автор: javas 31.3.2004, 22:38
Как заменить часть файла, на другую.
Кроме как BlockRead..Write можно еще что-нибудь использовать?

Автор: z-END 31.3.2004, 22:45
ну можно еще использовать ReadLn-WriteLn, а так-же Read - Write и конечно же Seek() hehe.gif
а специальных функций и процедур нетsad.gif

Автор: javas 31.3.2004, 22:46
Ну лады rolleyes.gif

Автор: Jey_k 31.3.2004, 22:47

да, синтаксис паскаля такой сервис не предоставляет вроде

Автор: <Spawn> 1.4.2004, 04:57
Вот пример:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 fs: TFileStream;
 ms: TMemoryStream;
 iTest: Char;
 Mode: Word;
begin
 if not OpenDialog1.Execute then
   Exit;

 if not FileExists(OpenDialog1.FileName) then
   Mode := fmCreate or fmOpenWrite
 else
   Mode := fmOpenWrite;

 try
   fs := TFileStream.Create(OpenDialog1.FileName, Mode);
   ms := TMemoryStream.Create;
   iTest := 'a';
   ms.Write(iTest, SizeOf(Char));
   iTest := 'b';
   ms.Write(iTest, SizeOf(Char));
   ms.Seek(0, soFromBeginning);
   //Пытаемся записать со второй позиции
   if fs.Size >= 2 then
     fs.Seek(2, soFromBeginning);
   fs.CopyFrom(ms, ms.Size);
 finally
   FreeAndNil(ms);
   FreeAndNil(fs);
 end;
end;

Автор: javas 1.4.2004, 09:51
А вторая позиция в чем измеряется?
to nJIaKca.spb,
Походу то что ты написал для типизированных файлов.

Автор: <Spawn> 1.4.2004, 11:25
Какая вторая позиция?

Автор: javas 1.4.2004, 11:41
Код

//Пытаемся записать со второй позиции
  if fs.Size >= 2 then

Автор: <Spawn> 1.4.2004, 13:55
В байтах smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)