Вниз
Скачать: CL | DM;

Помогите разобраться с pchar   Найти похожие ветки 

← →
DesperadO666 ©   (2006-05-16 16:48) [0]

Такая незадача....
Вот кусок кода,
где f : file
FindBlock(StartBlock) - процедура определяющая глобальные переменные  
StartBlock и EndBlock

procedure TForm1.Button1Click(Sender: TObject);
var
 pbuf2:pchar;
begin
 FindBlock(StartBlock);
 pbuf2:=nil;
 GetMem(pbuf2,(EndBlock-StartBlock));
 ShowMessage("strlen(pbuf2) - "+inttostr(strlen(pbuf2)));
 seek(f,StartBlock);
 BlockRead(f,pBuf2^,(EndBlock-StartBlock));
 memo2.Clear;
 memo2.Lines.Add(string(pBuf2));
 Freemem(pbuf2);
end;

При первом заходе в процедуру  
ShowMessage говорит что размер pbuf2=0, а при последующих то 2 то 3 то 0... И После считывания (EndBlock-StartBlock) байт у меня получается чуть больше, на величину какого-то "мусора" в pbuf2


← →
Сергей М. ©   (2006-05-16 16:51) [1]


> ShowMessage говорит что размер pbuf2=0, а при последующих
> то 2 то 3 то 0.


А сколько доллжнго "говорить" по-твоему ?


← →
DesperadO666 ©   (2006-05-16 17:10) [2]

По-моему 0, если еще не выполнилась строчка
BlockRead(f,pBuf2^,(EndBlock-StartBlock));


← →
MetalFan ©   (2006-05-16 17:35) [3]

а ты уверен, что выделенная память не содержит мусора?!
сделай после GetMem
ZeroMemory
посмотри, как strLen работает ;)


← →
MBo ©   (2006-05-16 17:35) [4]

А как, по-твоему, работает strlen?
Эта функция просто ищет #0, а GetMem не обязана заполнять нулями буфер, так что там может быть мусор.


← →
MetalFan ©   (2006-05-16 18:22) [5]


> А как, по-твоему, работает strlen?
> Эта функция просто ищет #0, а GetMem не обязана заполнять
> нулями буфер, так что там может быть мусор.

если это мне, то я как раз и имел ввиду то, что в выделеной памяти может находиться мусор, и strLen соотв. работать нормально не будет...


← →
MBo ©   (2006-05-16 18:46) [6]

>MetalFan
Нет, автору. Твоего поста еще не видел, когда писал.


← →
DesperadO666 ©   (2006-05-16 19:24) [7]

MetalFan MBo
Спасибо.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1147849669
Creative
2006-05-17 11:07
2006.06.04
программа не входит в цикл


2-1147762632
ttt_111
2006-05-16 10:57
2006.06.04
Работа с QRreport.


4-1141895510
msg
2006-03-09 12:11
2006.06.04
GetMessage в отдельном потоке


2-1147755522
Daimyo
2006-05-16 08:58
2006.06.04
Erorr


6-1139136992
parovoZZ
2006-02-05 13:56
2006.06.04
SQL и время с датой




   Наверх