Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Почему StrLen(PChar(Str:string)) возвращает 0 ?   Найти похожие ветки 

 
YeasU   (2004-11-03 13:28) [0]

И вообще, как узнать сколько места занимает структура на которую ссылается некоторый pointer?


 
begin...end ©   (2004-11-03 13:33) [1]


> как узнать сколько места занимает структура на которую ссылается
> некоторый pointer

Если есть просто нетипизированный указатель, и ничего больше не известно, то - никак.


 
Rem ©   (2004-11-03 13:38) [2]

Менеджер памяти должен об этом знать.

GetMem(p, size);
...
FreeMem(p); // тут же происходит корректное удаление, хоть размер и не указан


 
YeasU   (2004-11-03 13:49) [3]


procedure TForm1.COMPacket(Sender: TObject; Data: Pointer;
 Size: Integer);
var
 PBuffer:PChar;
begin
 PBuffer:=Data;
 ConvD(PBuffer,clRed);
end;

И если в procedure ConvD делать StrLen(PBuffer:PChar) то говорит, что 0...


 
Reindeer Moss Eater ©   (2004-11-03 13:55) [4]

Правду говорит


 
YeasU   (2004-11-03 13:59) [5]


> Reindeer Moss Eater ©   (03.11.04 13:55) [4]

Я почему то не думал, что он мне будет врать ;)
Почему?


 
Reindeer Moss Eater ©   (2004-11-03 14:02) [6]

Что почему?
Почему не врет или почему ноль?


 
YeasU   (2004-11-03 14:13) [7]


> Reindeer Moss Eater ©   (03.11.04 14:02) [6]

Ну ладно издеваться то...
Или мне надо сделать так =>
procedure TForm1.COMPacket(Sender: TObject; Data: Pointer;
Size: Integer);
var
PBuffer:PChar;
begin
PBuffer:=Data;
ConvD(PBuffer,Size,clRed);
end;

Procedure ConvD(Data:PChar;Size;Color:TColor);
var
 PData:PChar;
begin
 ...
 GetMem(PData,Size);
 PData:=Data;
 PLen:=StrLen(PData);
 ...
 FreeMem(PData);
 ...
end;

 Хотя по-моему это что то не то...


 
Reindeer Moss Eater ©   (2004-11-03 14:16) [8]

Ну и что из этого?
Если возвращает ноль, значит первый же байт, на который указывает PData имеет значение $00


 
Reindeer Moss Eater ©   (2004-11-03 14:19) [9]

GetMem(PData,Size);
PData:=Data;


Гениально.



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

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

Наверх




Память: 0.48 MB
Время: 0.043 c
6-1095061870
Comp
2004-09-13 11:51
2004.11.21
Перехват


14-1098887209
Григорьев Антон
2004-10-27 18:26
2004.11.21
А в какой именно книге Архангельского написано...


1-1099499465
lexa
2004-11-03 19:31
2004.11.21
Лингвистический анализ текста.


3-1098641955
Robin Hood
2004-10-24 22:19
2004.11.21
Обновление базы данных с помощью UpdateSQL


14-1099588440
YurikGL
2004-11-04 20:14
2004.11.21
Снова о книгах для детей