Проблема с TStream (то бишь с потоками данных)

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
voyd_absolute
Сообщения: 1
Зарегистрирован: 20 ноя 2010, 18:16

Почему-то некорректно работает метод Write у TFileStream - когда я указываю в качестве аргумента другой TFileStream, то получаю в результате данные в непонятном формате. Если же я вместо Write использую CopyFrom - всё работает отлично. Если я указываю в качестве аргумента просто строку текста - всё тоже работает нормально. В чём может быть проблема? Вот код:

Код: Выделить всё

  FZName := 'test';
  FZExt := 'zip';
  FZFullName := FZName+'.'+FZExt;
  AssignFile(f,FZFullName);
  Rewrite(f);
  CloseFile(f);
  Src := TFileStream.Create('test.txt', fmOpenRead);
  Dest := TFileStream.Create(FZFullName, fmOpenWrite);
  Dest.Write(Src,Src.Size);
  Dest.Free;
  Src.Free;
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

читаем хэлп:
Syntax
[Delphi] function Write(var Buffer: Type; Count: Integer): Integer; override;

Description
Use Write to write Count bytes to the resource associated with the handle stream, starting at the current position. After writing to the resource, Write advances the current position by the number bytes written, and returns the number of bytes written.

All other data-writing methods of a handle stream (WriteBuffer, WriteComponent) call Write to do the actual writing.


Где тут написано, что метод write сам прочитает данные из потока? Вам надо прочитать в переменную var Buffer: Type ваш исходный файл, и только потом, записываем этот буфер во второй поток
Изображение
Ответить