Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

Чтение из файла с помощью TFileStream...   Найти похожие ветки 

 
xn0bys ©   (2003-01-24 10:50) [0]

Дамы и Господа,

...
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:04) [1]

SORRY, ошибочка вышла

Stream.Create читать как Stream:=TFileStream.Create



 
xn0bys ©   (2003-01-24 11:17) [2]


> Причём: в отладчике (Watches) на Buf^ показывает всё правильно
> в обоих случаях!!!

Добавлю: И Buf2^ тоже показывает в отладчике все правильно!!!!!


 
xn0bys ©   (2003-01-24 11:30) [3]

Пример вызова 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;
...

Надеюсь понятно...


 
Smithson ©   (2003-01-24 11:31) [4]

Масса ошибок. Нет контроля выхода за раницы массивов. И что за присвоение Buf2^[i]:=Buf[i]; ?


 
xn0bys ©   (2003-01-24 11:31) [5]

Пример вызова 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:33) [6]

Smithson

Ну что вы все придираетесь, на память писал, факт в том что вторая процедура readFromFile работает, а первая НЕТ!!!

В чём загвозда?
Stream.ReadBuffer(Buf^,Size); - тоже не помагает...


 
Separator ©   (2003-01-24 11:33) [7]

Код вобще не правильно написан


 
Smithson ©   (2003-01-24 11:36) [8]

Цитировать приблизительно нельзя. Можно либо цитировать, лиюо пересказывать. Отлаживать пересказанный код невозможно. Посему я не придираюсь, а указываю на ляпы. Если в действительности их нет, то стоит приводит в вопросе цитату (не)работающего кода, не его пересказ.


 
Anatoly Podgoretsky ©   (2003-01-24 11:36) [9]

Сплошная ошибка


 
Anatoly Podgoretsky ©   (2003-01-24 11:40) [10]

xn0bys © (24.01.03 11:33)
А ты не на память, ты подлинный код преъяви, зачем обсуждать не тот код.


 
xn0bys ©   (2003-01-24 11:55) [11]

ТЕМА ЗАКРЫТА, не буду я TFileStream использовать, может когда-нить в будущем.

Все Пока....



Страницы: 1 вся ветка

Текущий архив: 2003.02.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
6-5117
neodiX
2002-12-07 15:50
2003.02.03
Изменение размера пакета TCP


14-5139
Le!
2003-01-10 08:36
2003.02.03
Люди посоветуйте!


3-4792
Alexandr
2003-01-15 12:12
2003.02.03
Формат даты в Interbase и не только


3-4764
AALLEEXX
2003-01-15 07:27
2003.02.03
ПОМОГИТЕ !!!!!!! (Надо 12 П.10,158-1*2 --> 12П1015812)


4-5343
KPV-10k
2002-12-20 22:35
2003.02.03
Кто знает как заставить НТ перейти в спящий режим...