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

Вниз

почему р после этого всего P равно Nill   Найти похожие ветки 

 
beginer1 ©   (2004-02-11 16:39) [0]

есть такой кусочек кода

var
FileName:string;
Buf: array of PChar ;
p:Pchar;
f: TFileStream;
a, b, i:Integer;

begin
try
f:= TFileStream.Create(FileName, fmOpenReadWrite);
EXCEPT
exit;
end;

i:=f.Seek(0, soFromEnd);
// ReallocMem(P, i);
f.Seek(0, soFromBeginning);
f.Read(p, i);

почему р после этого всего P равно Nill


 
kostik78ua   (2004-02-11 17:02) [1]

Вместо P: PChar используй P: array[0..255] of char;


 
Mystic ©   (2004-02-11 17:06) [2]

А что ты хочешь сделать? Пока что ярко выражено стремление вызвать Access Violation.


 
jack128 ©   (2004-02-11 17:25) [3]


> EXCEPT
> exit;
> end;
вот за это, ИМХО, убивать нужно..


 
Beginer1 ©   (2004-02-11 17:36) [4]

Mystic
засунуть в Р весь этот файл


 
beginer1 ©   (2004-02-11 17:36) [5]

Удалено модератором


 
Digitman ©   (2004-02-11 17:55) [6]

var
FileName:string;
p:Pchar;
f: TFileStream;
...

f:= TFileStream.Create(FileName, fmOpenReadWrite);
try
GetMem(p, f.Size);
try
f.ReadBuffer(p^, f.Size);
... здесь работаем с P
finally
FreeMem(p);
end;
finally
f.Free;
end;


 
beginer1 ©   (2004-02-11 18:08) [7]

всё равно Р равно nil


 
Digitman ©   (2004-02-11 18:15) [8]

значит, файл пустой


 
beginer1 ©   (2004-02-11 18:26) [9]

файл не пустой!!!


 
Плохиш   (2004-02-11 18:32) [10]


> beginer1 © (11.02.04 18:08) [7]
> всё равно Р равно nil

Врёшь!


 
Digitman ©   (2004-02-11 18:37) [11]


> beginer1 © (11.02.04 18:26) [9]
> файл не пустой!!!


проконтролируй значение f.Size и убедись в этом


 
Digitman ©   (2004-02-11 18:40) [12]


> Плохиш (11.02.04 18:32) [10]


эк ты круто) ... "к ногтю вруна"))


 
beginer1 ©   (2004-02-11 18:53) [13]

f.Size = 3901409

:(


 
Digitman ©   (2004-02-11 18:58) [14]


> beginer1 © (11.02.04 18:53) [13]
> f.Size = 3901409


значит, GetMem(p, 3901409) просто обязан вернуть ненулевой указатель на блок выделенной памяти размером в 3901409 байт


 
beginer1 ©   (2004-02-11 19:39) [15]

а теперь и Access Violation выдаёт


 
Тимохов ©   (2004-02-11 19:57) [16]


> всё равно Р равно nil

Ты вообще, где это проверяешь? На какой строчке?


 
beginer1 ©   (2004-02-11 20:22) [17]

>Тимохов

ctrl + F5


 
Тимохов ©   (2004-02-11 20:25) [18]

На какой строке кода из 6?


 
beginer1 ©   (2004-02-11 20:48) [19]

Да вообше по всему ходу выполнения программы


 
Digitman ©   (2004-02-12 08:42) [20]


> beginer1 © (11.02.04 20:48) [19]


поставь брейкпойнт на строчке
GetMem(p, f.Size);

запусти программу, поймай этот брейкпойнт

подведи курсор мыши к "f.Size" - через секунду отладчик выбросит хинт со значением этого св-ва, убедись что оно не равно нулю

сделай один шаг (F8)

подведи курсор мыши к "p" - отладчик покажет тебе значение переменной P - оно не должно быть = nil, если f.Size > 0 !!


 
PVOzerski ©   (2004-02-12 09:57) [21]

Ты заметил "галочку"?:
.Read(p ^, i);



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

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

Наверх




Память: 0.51 MB
Время: 0.024 c
7-80308
BoxTer
2003-11-27 08:57
2004.02.25
Как очистить очередь печати Windows???


1-79700
VID
2004-02-12 00:17
2004.02.25
Какая разница между IE и TEmbeddedWB ?


14-80215
Clift
2004-02-05 17:38
2004.02.25
ХР


14-80177
syte_ser78
2004-02-05 15:03
2004.02.25
SaveHTMLSourceToFile


1-79973
Delph
2004-02-12 16:46
2004.02.25
String to Data