![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
String vs PAnsiChar [D7, WinXP]
o2 © (2003-09-28 08:57:00)
Как конвертировать string в PAnsiChar? Заранее спасибо, а если и кусочек кода подбросите... тогда моей благодарности предела не будет!
Livid (2003-10-01 10:01:00) [1]
PChar есть указатель на массив символов, заканчивающийся на #0; String есть массив Char...
Тк указателем на массив является первый элемент его, то соответственно преобразовываем string к Pchar:
b:=b+#0;
a:=@b[1];
где a-pchar
и b-String;
Аналогично можно и при вызове функции. Главное, если передавать @str[1] как var, то следует заранее установить длину строки:
SetLength(str,len);
Ihor Osov'yak (2003-09-29 12:52:00) [2]
2 [3] Dan (29.09.03 09:07)
вот это
> str:=str+chr(0);
если str - не shortstring - то лишнее..
Anatoly Podgoretsky (2003-09-29 09:13:00) [3]
I.C. (28.09.03 09:16) [1]
А я очень долго смеялся за этот совет b:=a.
Вот это возможно правильный b:=PChar(a); в зависимости от того что он хочет получить от пустых строк.
Dan (2003-09-29 09:07:00) [4]
Попробуй так.
var
str: string;
B: PChar;
...
str:=str+chr(0);
B:=@str[1];
Удачи
o2 (2003-09-28 11:12:00) [5]
Вот и фишка то в чём... он их не приравнивает нивкакую... говорит что разные типы...
I.C. (2003-09-28 09:16:00) [6]
Ха..смеялся долго.
var a:string;
b:Pchar; // PAnsiChar если поковыряешься
b:=a; // неявное преобразование типов проведет Delphi
// хочешь знать как ? Types.pas, но это не твои
// проблемы по больщому счету
если красота всеже дороже
b:=PChar(a);
Если все таки не работает - смотри выделена ли память для b
тоесть с точки зрения Windows функций - это просто указатель
и еще это все должно заканчиваться #0 а то будет каша на
выходе...
Мастера поправте если не прав