Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизПочему 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c