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


Автор: royun 2.9.2011, 09:36
Открываю бинарный файл на чтение используя TFileStream -> Затем пока не достигнуто конца файла -> проверить: если файл начинается на 86 (Hex), то сделать что-либо. Не могу додуматься как реализовать проверку файла начинается он с  86 (Hex) или нет

Код

procedure TForm1.Button1Click(Sender: TObject);
var
Stream1: TFileStream;
begin
if Not OpenDialog1.Execute then
Exit;
Stream1 := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
While Stream1.Position<>Stream.Size do
begin


end;

Stream1.Free;

end;

Автор: AndreyIQ 2.9.2011, 09:45
Цитата(royun @ 2.9.2011,  09:36)
Открываю бинарный файл на чтение используя TFileStream -> Затем пока не достигнуто конца файла -> проверить: если файл начинается на 86 (Hex), то сделать что-либо. Не могу додуматься как реализовать проверку файла начинается он с  86 (Hex) или нет

Код

procedure TForm1.Button1Click(Sender: TObject);
var
Stream1: TFileStream;
begin
if Not OpenDialog1.Execute then
Exit;
Stream1 := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
While Stream1.Position<>Stream.Size do
begin


end;

Stream1.Free;

end;

Код

procedure TForm1.Button1Click(Sender: TObject);
var
Stream1: TFileStream;
Buf:Byte;
begin
if Not OpenDialog1.Execute then
Exit;
Stream1 := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
While Stream1.Position<>Stream.Size do
begin
Stream1.Seek(0, soFromBeginning);
Stream1.Read(Buf, 1);
if Buf = $86 then ; 
end;

Stream1.Free;

end;

Автор: royun 2.9.2011, 09:48
Что-то блок не работает, просто Delphi зависает и все

Код

While Stream1.Position<>Stream.Size do
begin
Stream1.Seek(0, soFromBeginning);
Stream1.Read(Buf, 1);
if Buf = $86 then ; 
end

Автор: alexnef 3.9.2011, 11:22
Вынеси перед циклом строки
Код

Stream1.Seek(0, soFromBeginning);
Stream1.Read(Buf, 1);
if Buf = $86 then ;

а то в цикле курсор ставится на начало файла и цикл получается бесконечным.

Автор: royun 27.10.2011, 06:21
Точно. Тема закрыта.

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