Текущий архив: 2003.03.27;
Скачать: CL | DM;
ВнизString в PChar Найти похожие ветки
← →
Sergey_ (2003-03-13 18:57) [0]Уважаемые All прошу прощения за глупый вопрос, подскажите как из srting сделать PChar?
← →
Anatoly Podgoretsky (2003-03-13 19:00) [1]Он и так совместим, кроме того PChar это всего лишь указатель, а не строка.
← →
Sergey_ (2003-03-13 19:03) [2]Я тоже считал что совместим однако для функции требуется PChar
и при попытке запихоть туда string ругается на несовместимость типов
← →
kDenis (2003-03-13 19:03) [3]PChar(
"Строка типа String"
)
← →
Anatoly Podgoretsky (2003-03-13 19:05) [4]Sergey_ (13.03.03 19:03)
Правильно, надо было пропустить через функцию PChar и этим ясно сказать, что у тебя совместимость с PChar
← →
kDenis (2003-03-13 19:13) [5]А как PChar преобразовать в String?
← →
Романов Р.В. (2003-03-13 19:15) [6]:=
← →
Sergey_ (2003-03-13 19:15) [7]Спасибо за ответы, но проблема не решилась в обычном приложении
всё работает в сервис - приложении ругается матом
"invalid typeCast" где копать?
← →
kDenis (2003-03-13 19:20) [8]А куда ты эту строку отправляешь?
Или "invalid typeCast
" в процессеPChar("Строка ")
?
← →
kDenis (2003-03-13 19:21) [9]Я хотел сказать
А куда ты эту строку отправляешь?
Или "invalid typeCast
" возникает в процессеPChar("Строка ")
?
← →
Sergey_ (2003-03-13 19:25) [10]Вот туда : windows.WinExec(ss,SW_HIDE);
и в хелпе функции Pchar(..) так и не нашёл :о)
из какого она модуля
// str параметр
var ss : PChar;
Begin
//......
str :="net send isa "+str;
ss := pchar(str);
If sys = 1 then Begin
windows.WinExec(ss,SW_HIDE);
End;
← →
kDenis (2003-03-13 19:48) [11]
> и в хелпе функции Pchar(..) так и не нашёл :о)
в хелпе её и нету...
> Вот туда : windows.WinExec(ss,SW_HIDE);
Может PChar и PAnsiChar это не одно и тоже?
Попробуй использовать PAnsiChar("Текст") вместо PChar()
← →
Sergey_ (2003-03-13 19:54) [12]kDenis> Спасибо за совет я нашёл место где обамбучился, но не понял почему : переменная STR - входной параметр процедуры
после того как я создал локальную переменную:
var InPar : string;
и присвоил ей значение str функция PChar(InPar) стала работать
но почему ??
← →
kDenis (2003-03-13 21:29) [13]
> Sergey_
???????????????
← →
jack128 (2003-03-13 21:43) [14]kDenis © (13.03.03 19:48
Может PChar и PAnsiChar это не одно и тоже?
Попробуй использовать PAnsiChar("Текст") вместо PChar()
Это одно и тоже
← →
TXPManifesto (2003-03-13 22:49) [15]WinExec(Пчар(ss),SW_HIDE);
← →
Diamond Cat (2003-03-14 02:03) [16]Ой блин красавцы, как ни странно но дельфи часто не присваивает какой либо переменной данное значение т.е. не выделяет физически новый раздел памяти а просто присваивает указатель где искать данные. это раз
два,ну обозначил ты переменую ss как Pchar тоесть сделал ее строкой с нулевым окончанием, рассмотрим что есть Pchar, а это ни что инное как последовательный массив символов оканчивающийся на #0 , возникают вопросы
1)а ты выделил память под эту переменную
2) а ты уверен что в этой переменной не навалено всякой трухи
Для присвоения одной строки pchar другую следует использовать спец. функции тапа strcopy
И следующее достаточно сделать windows.WinExec(pchar("net send isa "+str),SW_HIDE); естественно если str это string
← →
andrey_pst (2003-03-14 07:13) [17]
...
str : string;
PChTmp : PChar; // командная строка
...
str := "...";
...
PChTmp := StrNew(PChar(str)); // выделим память под строку с нулевым символом
windows.WinExec(PChTmp, SW_HIDE);
...
StrDispose(PChTmp); // освободим память из под строки с нулевым символом
...
← →
Anatoly Podgoretsky (2003-03-14 08:36) [18]andrey_pst © (14.03.03 07:13)
А это то зачем?
Уже сколько раз сказали, что string это и есть та самая "строку с нулевым символом", другое дело если бы нужна была отдельная ASCIIZ строка, тогда было бы оправдано применение StrNew, но и в этом случае стоило бы взглянуть, что данная функцияя относится к backward compatibility routines, оставлена для совместимости с D1/Win16
← →
Mars (2003-03-14 09:19) [19]Converts null-terminated string to a Pascal string.
Unit SysUtils
function StrPas(const Str: PChar): string;
← →
Anatoly Podgoretsky (2003-03-14 10:25) [20]Mars (14.03.03 09:19)
Опять же читаем хелп по этой функции и что же мы видим backward compatibility routines, только тут еще хуже, что будешь кусать если окажется, что строка более 255 символов?
Да и еще одно, ты вопрос то читал?
Никто не просит из PChar делать string, более того совсем наоборот!
← →
Mars (2003-03-14 11:49) [21]>>kDenis © (13.03.03 19:13)
>>А как PChar преобразовать в String?
Это был ответ kDenis"y.
Для некоторых операций вполне подходит.
← →
Anatoly Podgoretsky (2003-03-14 11:53) [22]Mars (14.03.03 11:49)
Для некоторых операций вполне подходит S := P.
← →
Bel (2003-03-14 12:06) [23]В любой книжке про Delphi сказано, что указатели вообще, и PChar в частности, это большие грабли. Поэтому сначала не мешало бы почитать рекомендации по использованию PChar в книжке или в хэлпе.
И ещё вариант, которого здесь пока не было: Использовать в качестве переменной для передачи в функциюarray of Char
.
И не забудь добавить в конце строки символ #0.
Страницы: 1 вся ветка
Текущий архив: 2003.03.27;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.012 c