Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Внизпочему р после этого всего 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c