![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение из файла с помощью TFileStream... [D5, D6, Win95/98, Win2k, WinXP]
xn0bys © (2003-01-24 10:50:00)Дамы и Господа,
...
Var Buf2 : PByteArray;
...
Procedure Create;
begin
GetMem(Buf2,Size);
end;
function readbyte(num:integer):byte;
begin
Result:=Buf2^[num];
end;
Procedure ReadFromFile;
Var buf :PByteArray;
Stream : TFileStream;
begin
Stream.Create("zzz",fmOpenRead);
Try
GetMem(Buf,Size);
Try
Stream.Read(Buf^,Size)
For i:=0 to Size-1 do Buf2^[i]:=Buf[i];
finally
freeMem(Buf);
end;
finally
Stream.free;
end;
end;
Вот, если делаю так ^^^, то function readbyte(num:integer):byte;
возвращяет неверное значение, а если вот так:
Procedure ReadFromFile;
Var buf :PByteArray;
F : File;
begin
AssignFile(F,"zzz");
Reset(F,1);
Try
GetMem(Buf,Size);
Try
BlockRead(F,Buf^,Size)
For i:=0 to Size-1 do Buf2^[i]:=Buf[i];
finally
freeMem(Buf);
end;
finally
CloseFile(F);
end;
end;
To function readbyte(num:integer):byte;
Работает правильно!
Причём: в отладчике (Watches) на Buf^ показывает всё правильно в обоих случаях!!!
ВОТ! Может кто знает как?
xn0bys (2003-01-24 11:55:00) [1]ТЕМА ЗАКРЫТА, не буду я TFileStream использовать, может когда-нить в будущем.
Все Пока....
Anatoly Podgoretsky (2003-01-24 11:40:00) [2]xn0bys © (24.01.03 11:33)
А ты не на память, ты подлинный код преъяви, зачем обсуждать не тот код.
Smithson (2003-01-24 11:36:00) [3]Цитировать приблизительно нельзя. Можно либо цитировать, лиюо пересказывать. Отлаживать пересказанный код невозможно. Посему я не придираюсь, а указываю на ляпы. Если в действительности их нет, то стоит приводит в вопросе цитату(не)работающего кода, не его пересказ.
Anatoly Podgoretsky (2003-01-24 11:36:00) [4]Сплошная ошибка
xn0bys (2003-01-24 11:33:00) [5]Smithson
Ну что вы все придираетесь, на память писал, факт в том что вторая процедура readFromFile работает, а первая НЕТ!!!
В чём загвозда?
Stream.ReadBuffer(Buf^,Size); - тоже не помагает...
Separator (2003-01-24 11:33:00) [6]Код вобще не правильно написан
Smithson (2003-01-24 11:31:00) [7]Масса ошибок. Нет контроля выхода за раницы массивов. И что за присвоение Buf2^[i]:=Buf[i]; ?
xn0bys (2003-01-24 11:31:00) [8]Пример вызова ReadByte:
...
procedure setpoint(k,x,y:integer);
Var pl:PByteArray;
begin
pl:=Image1.Picture.Bitmap.Scanline[y];
For i:=0 to k do
pl[i].r:=readbyte(x);
end;
...
Надеюсь понятно...
xn0bys (2003-01-24 11:30:00) [9]Пример вызова ReadByte:
...
procedure setpoint(k,x,y:integer);
Var pl:PByteArray;
begin
pl:=Image1.Picture.Bitmap.Scanline[y];
For i:=0 to k do
pl[i].r:=readbyte(x);
end;
...
Надеюсь понятно...
xn0bys (2003-01-24 11:17:00) [10]
> Причём: в отладчике (Watches) на Buf^ показывает всё правильно
> в обоих случаях!!!
Добавлю: И Buf2^ тоже показывает в отладчике все правильно!!!!!
xn0bys (2003-01-24 11:04:00) [11]SORRY, ошибочка вышла
Stream.Create читать как Stream:=TFileStream.Create