Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.16;
Скачать: CL | DM;

Вниз

PChar   Найти похожие ветки 

 
anti256 ©   (2003-12-23 18:21) [0]

Подскажите, к4то может, как из TString сделать PChar и наоборот, желательно на делфях, а не на API. Заранее благодарю.


 
Reindeer Moss Eater ©   (2003-12-23 18:22) [1]

Что такое TString?


 
Иван Шихалев ©   (2003-12-23 18:22) [2]

Что такое TString?


 
Sandman25 ©   (2003-12-23 18:23) [3]

1)MyPChar := PChar(MyString);
2)MyString := MyPChar;


 
Sandman25 ©   (2003-12-23 18:23) [4]

Только сейчас заметил букву T... TString? А это что?


 
TUser ©   (2003-12-23 18:24) [5]

PChar(YoutTStrings/YourTStringList.Text);


 
TUser ©   (2003-12-23 18:25) [6]

Он имел в виду или TSrings или просто string. Ответы уже есть.


 
anti256 ©   (2004-01-03 23:39) [7]

Я имел в виду string, просто опечатался. Проблема в следующем. Надо запускать exe-шник, а путь к файлу брать из OpenDialog, Edit или ini-файла.


 
имя   (2004-01-03 23:46) [8]

Удалено модератором


 
AllDer   (2004-01-04 01:23) [9]

var
pt:PCHAR;
sa:string;

begin
pt:=PCHAR(sa);


 
Dimaxx ©   (2004-01-04 02:35) [10]

PChar - это указатель на string. Не парьтесь...


 
default ©   (2004-01-04 02:39) [11]

Dimaxx © (04.01.04 02:35) [10]
не, не так


 
Ihor Osov'yak ©   (2004-01-04 13:17) [12]

Если посмотреть в учебник, что представляет собой string и PChar, очень много вопросов исчезнет.

Делфийский компилятор string по умолчанию интерпретирует как AnsiString.
AnsiString же есть собственно тело строки, перед которым четыре байта длинны и четыре байта счетчика использований - уже не помню, что раньше, а сейчас смотреть влом - тем более, для сабжевой темы это несущественно. В конце тела строки - зеро символ, то бишь 0. Если мы запрашиваем @s, где s - string, то получаем адрес начала тела строки (то есть @s эквивалентный @s[1]). Немного возвращаясь назад, можно сказать, что счетчик использований и длинна строки как бы в отрицательных смещениях относительно @s..
Но к чему это я все… Тот факт, что в конце тела строки есть зеро-символ и @s возвращает указатель на начало строки, то @s можно интерпретировать как PChar. То есть в большинстве случаев, если какая-то апишная функция ожидает Pchar можно использовать конструкцию вида @s, где s – делфийский AnsiString, то бишь string, если вы не делали соответствующей химии с опциями компилятора..

Далее. Как делать преобразования. Очень просто. Присваиванием.
Например
var
s:string;
pc:PChar;

pc := @s; //1

s := pc; //2
s := pc^; //3

Причем в первом случае (строчка с //1) действительно имеем присваивание адресов (см. мой треп выше), для случаев 2 и 3 идет неявный вызов функции конвертации, LstrFromChar, если мне память не изменяет..
Кстати 2 и 3 порождают одинаковый код, имхо правильным и более читабельным есть 3 – старые паскалисты меня поймут, но в борланде решили иначе и сделали допустимым 2..



Страницы: 1 вся ветка

Текущий архив: 2004.01.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-49559
Zillah
2004-01-05 14:35
2004.01.16
JEDI Library несколько вопросов...


1-49638
Brut
2004-01-04 14:54
2004.01.16
Как использовать типы и классы в различных модулях.


11-49477
BaRToV
2003-04-28 10:07
2004.01.16
TDirList +


1-49529
miracle_fox
2003-12-31 11:08
2004.01.16
какая-то аброкадабра с текстом в RichEdit


14-49681
Goblin
2003-12-26 12:15
2004.01.16
В паскале нет функции копирования файлов?