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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.031 c
1-84321
AndrewR
2003-06-16 06:28
2003.06.26
Как можно вызвать FindDialog, что бы в Memo текст искал. Может ке


3-84035
Andrey V.
2003-05-29 08:02
2003.06.26
Слишком моного версий ...


3-84008
softmaster
2003-05-25 00:18
2003.06.26
помощь в создании запроса


14-84599
Mr.Harry
2003-06-09 01:53
2003.06.26
Непонятка...


1-84329
Viktoria
2003-06-15 18:35
2003.06.26
Обновление метки в цикле.





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