![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Конвентирование ;String в PChar [D5, Win95/98, WinME]
VS © (2001-10-08 13:23:00)Здраствуйте.
Подскажите пожалуйста, как мне конвентировать String в PChar.
Очень нужно!!!!
Если можно примерчик пожалуйста!
Dimka Maslov (2001-10-09 12:02:00) [1]>anatoly
Типы string и PChar - не одно и то-же. String - это фактически объект, перед первым символом такой строки располагается информация о длине строки, колическтве ссылок на неё и количество выделенной памяти, кроме того такие строки могут содержать и нулевые символы, а память под строки выделяется автоматически. PChar - же это всего лишь указатель на первый символ строки, оканчивающейся нулевым символом и о выделении памяти здесь должен заботиться сам программист. Для преобразования этих типов допустимы следующие вызовы:
<pre>
var
s: string;
p: PChar;
begin
...
s:=p; //и всё
p:=PChar(S);
...
// всё остальное компилятор сделает сам.
<pre>
А теперь про Huge strings. Если эта опция выключена, то под типом stringподразумевается ShortString, то есть строка из Turbo Pascalя, в противном случае - AnsiString- новый тип строк.
anatoly (2001-10-09 11:11:00) [2]начиная с 4-ой (а может и раньше) версии тип string и pchar является одним и тем-же типом (при условии, что в опциях отмечена галочка "Huge strings") по-этому можно обойтись приведением типов.
т.е.
var s: string;
p: pchar;
begin
s := string(p);
p := pchar(s);
end;
с уважением.
pasha676 (2001-10-09 10:42:00) [3]StrPCopy - еще есть такая функция
Anatoly Podgoretsky (2001-10-08 21:27:00) [4]P:=@S[1]; // может возинкнуть исключение
Конечно, так писать нельзя, если волнует надежность
поручик Пулковский (2001-10-08 14:02:00) [5]Очень просто
var
S: string;
P: PChar;
begin
...
P:=PChar(S); // сработает всегда
или
P:=@S[1]; // может возинкнуть исключение