Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему StrLen(PChar(Str:string)) возвращает 0 ?


YeasU ©   (2004-11-03 13:28:00) 

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


Reindeer Moss Eater   (2004-11-03 14:19:00) [1]

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


Гениально.


Reindeer Moss Eater   (2004-11-03 14:16:00) [2]

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


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


> 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:02:00) [4]

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


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


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

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


Reindeer Moss Eater   (2004-11-03 13:55:00) [6]

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


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


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...


Rem   (2004-11-03 13:38:00) [8]

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

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


begin...end   (2004-11-03 13:33:00) [9]


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо