Вниз
Скачать: 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.025 c
2-1148070813
Mr tray
2006-05-20 00:33
2006.06.04
VkKeyScan работает только для латинских символов


4-1141773912
_Devil_
2006-03-08 02:25
2006.06.04
Удаление папки


2-1147866961
webpauk
2006-05-17 15:56
2006.06.04
Clipboard


2-1147777741
Steplerr
2006-05-16 15:09
2006.06.04
Печать файла в DOS кодировке


15-1147345875
Slava812
2006-05-11 15:11
2006.06.04
Цвета в Delphi




   Наверх