Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

Помогите разобраться с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
15-1146884834
dancer
2006-05-06 07:07
2006.06.04
aDSL


15-1147268292
49 Cent
2006-05-10 17:38
2006.06.04
Как отключить beep


9-1131012749
Ламерюга
2005-11-03 13:12
2006.06.04
Матрица поворота


6-1133513353
Fishka
2005-12-02 11:49
2006.06.04
Прием почты - ошибка


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский