Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c