Страница 1 из 1

PAnsiChar

Добавлено: 29 май 2009, 11:28
Oleg_Rus
граждане форумчане, объясните мне как в программе сделать вызов другого приложения с помощью ShellApi или другой подобной ф-ии.
Проблема в следующем: необходимо сделать запуск другого приложения программно. Моя делфа матюгается, что Char и PAnsiChar несовместимы.

Re: PAnsiChar

Добавлено: 29 май 2009, 13:02
Duncon
[syntax=Delphi]
var
si: TStartupInfo;
pi: TProcessInformation;
begin
FillChar(si, SizeOf(si), 0);
si.cb := SizeOf(si);
CreateProcess(nil, 'my.exe', nil, nil, FALSE, CREATE_NEW_CONSOLE, nil, nil, si, pi);
[/syntax]
.msi немного по другому запускаются..

Re: PAnsiChar

Добавлено: 02 июн 2009, 03:44
Oleg_Rus
CreateProcess(nil, 'my.exe', nil, nil, FALSE, CREATE_NEW_CONSOLE, nil, nil, si, pi);

у меня загвоздка именно в 'my.exe'. суть: пользователь может сам ввести запуск приложения и путь до него.

Re: PAnsiChar

Добавлено: 02 июн 2009, 09:25
Duncon
Так приведи к типу..
[syntax=Delphi]
PChar('my.exe');
PAnsiChar('my.exe');
[/syntax]

Re: PAnsiChar

Добавлено: 02 июн 2009, 13:08
Oleg_Rus
:o а рази так можна?! сорри, ни знал... )

Re: PAnsiChar

Добавлено: 02 июн 2009, 13:35
Naeel Maqsudov
В ObjectPascal тип String (фактически LASCII) является совместимым в PChar (фактически ASCIIZ). Т.е. он дополнен нулем в конце.
При тайпкасте используется указатель на первый символ строки (а перед первым символом, как известно есть еще и длина).

Re: PAnsiChar

Добавлено: 02 июн 2009, 18:06
Oleg_Rus
В ObjectPascal тип String (фактически LASCII) является совместимым в PChar (фактически ASCIIZ). Т.е. он дополнен нулем в конце.

Вопрос: У меня Delphi 7. Неужели ObjectPascal прародитель Delphi? :0

Re: PAnsiChar

Добавлено: 02 июн 2009, 19:21
Duncon
Погугли чтоли чють-чють...