Главная страница
    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.49 MB
Время: 0.012 c
1-88069
Серега.Б
2003-03-16 03:12
2003.03.27
Разрешение экрана


4-88298
LeReve
2003-01-30 18:09
2003.03.27
Как привельно использовать GetDIBits???


14-88244
RV
2003-03-12 12:02
2003.03.27
Вода течет...


1-87892
Barlok
2003-03-16 15:10
2003.03.27
Подскажите как сделать чтобы символ подсвечивался в Edit.


14-88209
War
2003-03-11 10:37
2003.03.27
Война за нефть.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский