Главная страница
    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.45 MB
Время: 0.048 c
5-1132723716
ККВ
2005-11-23 08:28
2006.06.04
Не запускается программа в режиме отладки


4-1142155729
Volf_555
2006-03-12 12:28
2006.06.04
Как закрыть окно Microsoft Internet Explorer?


2-1147699621
Ironman83
2006-05-15 17:27
2006.06.04
Выборки через TIBDataset


4-1142234174
Chaser
2006-03-13 10:16
2006.06.04
Определить активное ДОС-окно


2-1147808102
Melifaro
2006-05-16 23:35
2006.06.04
StringGrid,GridDrawCell





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский