Форум: "Основная";
Текущий архив: 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