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

Вниз

PChar and Null-terminator   Найти похожие ветки 

 
Hog   (2003-06-11 09:47) [0]

Подскажите пожалуйста, почему если я вызываю PChar в функции с var
параметром

GetMem(P,SizeOf(Str));
Func(P^);
RichEdit1.Lines.Add(P);

Получаю строку и на конце "I am gonna get youђ"

А если
S:String;
P:PCHar;

P:=Pchar(S);

Все нормально.

Ведь дельфи должна нулевой символ в конец добавлять, ну хорошо,
даже если она не добавила откуда на конце ђ, я ведь задал строку
размера "I am gonna get you" и больше ничего...


 
Крот ©   (2003-06-11 10:19) [1]

Нулевой символ надо добавлять самому

P: PChar;
Size: integer;//Длина строки, кол-во символов

P := PChar(AllocMem(Size) + 1);
(P + Size)^ := #0;




 
Hog   (2003-06-11 12:23) [2]


> P := PChar(AllocMem(Size) + 1);


Не понял этой строки, зачем приводить к типу PChar - AllocMem(Size)



 
MBo ©   (2003-06-11 12:24) [3]

SizeOf(Str) - так не делай!


 
Palladin ©   (2003-06-11 12:31) [4]


> Hog (11.06.03 12:23)

StrAlloc тебе поможет, PChar это хоть и указатель, но для корректной работы необходимо использовать предназначеные для этого типа функции


 
Anatoly Podgoretsky ©   (2003-06-11 12:53) [5]

И так делать не надо (P + Size)^ := #0;а то будет str+бред+#0


 
Крот ©   (2003-06-11 14:35) [6]


> Anatoly Podgoretsky © (11.06.03 12:53)


Я перед тем как написать ответ все это проделал. Никаких проблем, все работает.


 
Крот ©   (2003-06-11 14:42) [7]


> Hog (11.06.03 12:23)


Так ведь AllocMem возвращает Pointer.


 
han_malign ©   (2003-06-11 14:57) [8]

>SizeOf(Str) - так не делай!
- ну если Str: ShortString - то вполне можно
> P := PChar(AllocMem(Size ) + 1);
- P := PChar(AllocMem(Size + 1));

а воообще, у тебя ошибка в Func, в 17-ой строке



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
14-84587
Soul_Reaver
2003-06-09 03:05
2003.06.26
Компиляция программы


4-84816
sucer
2003-04-22 10:09
2003.06.26
Проблема с HOOK N2.Как перехватить?


3-84043
Z_man7777
2003-06-02 06:25
2003.06.26
Вопрос по полю типа Float в InterBase6.x


3-84006
abc
2003-05-30 16:05
2003.06.26
как вернуть TQuery в нормальный режим, после режима Edit??


14-84662
LiLa Ananda
2003-06-07 10:08
2003.06.26
Просто восточная мудрость