Главная страница
    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.46 MB
Время: 0.024 c
14-84647
NighCold
2003-06-10 11:15
2003.06.26
Подскажите....


1-84319
Shooraniy
2003-06-16 03:27
2003.06.26
определить подключен ли комп к интернет через диал-ап...


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


3-83957
Man
2003-06-04 14:03
2003.06.26
как научить датасет правильно различать типы полей


3-83988
Инна
2003-05-30 10:59
2003.06.26
перекючение страниц в PageControl





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