Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.52 MB
Время: 0.012 c
1-88034
BofA
2003-03-14 15:35
2003.03.27
Как перебрать все компоненты, расположенные на TPanel?


14-88144
Supreme 2
2003-03-12 15:14
2003.03.27
Каким способом можно прославиться в школе?


7-88286
Lex.
2003-02-02 00:45
2003.03.27
Drag&Drop


3-87871
Alex Chu
2003-03-11 12:45
2003.03.27
триггер interbase


1-87898
ghg
2003-03-13 08:41
2003.03.27
Нетипизированный файл и Tbitmap