Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.062 c
2-1147699621
Ironman83
2006-05-15 17:27
2006.06.04
Выборки через TIBDataset


2-1148025380
zorik
2006-05-19 11:56
2006.06.04
Возвратить фокус приложению


15-1146045980
MsGuns
2006-04-26 14:06
2006.06.04
Почему так много злобы ?


15-1147434041
oldman
2006-05-12 15:40
2006.06.04
Какой процесс работает? (задачка для новичков)


2-1147851226
Ironman83
2006-05-17 11:33
2006.06.04
DBNavigator