Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 а то будет каша на
выходе...

Мастера поправте если не прав


Наверх

Титульная страница Поиск, карта сайта Написать письмо