Трудности с ShellExecute() в DelphiScript

Итак, вот мой код:

Procedure exec;
uses
    ShellApi;
begin
try
ShellExecute( 0, 'Open', 'C:\ParamReport.Txt', nil,nil, SW_NORMAL);
except
ShowMessage('failed');
end;
end;

Я пытаюсь выполнить внешнюю программу (независимо от типа) в Altium Designer 2013 (13.3).

В этой программе есть основной редактор, который я использую. Очевидно, что из всей документации по написанию сценариев не упоминается, какую версию DelphiScript он использует в своем редакторе. Это расстраивает, потому что, когда я копирую и вставляю (работающий) код в редактор и пытаюсь его запустить - я сталкиваюсь со многими ошибками.

В текущем коде я получаю эту ошибку: "Необъявленный идентификатор: SW_NORMAL"

также я хочу использовать команду ".Split()". Тем не менее, это, очевидно, требует "PChar" - который выдает эту ошибку: "Необъявленный идентификатор: PChar"

Я использую Windows 7 Pro 64

Пожалуйста помоги. Спасибо!

* РЕДАКТИРОВАТЬ *

Я уже пытался "SW_SHOWNORMAL" - это выдает ту же ошибку.

* РЕДАКТИРОВАТЬ #2 *

Я изменился:

ShellExecute( 0, 'Open', 'C:\ParamReport.Txt', nil,nil, SW_NORMAL);

чтобы:

ShellExecute( 0, 'Open', 'C:\ParamReport.Txt', nil,nil, 1);  

по рекомендации Андреаса Рейбранда, и я обнаружил, что была выдана новая ошибка.

"Необъявленный идентификатор: ShellExecute"

Теперь я в замешательстве.

3 ответа

Решение

Это выглядит так, как будто DelphiScript не поддерживает вызовы Windows API с помощью ShellAPI, В этом случае ваш код не может работать. Я предлагаю вам запросить техническую поддержку у Altium.

Я не могу говорить за Delphiscript, но в Delphi SW_... константы определены в Windows единица измерения:

uses
  ShellApi, Windows;

Проверьте, есть ли у Delphiscript Windows Блок.

PChar встроен в компилятор Delphi, так что если PChar тогда не компилируется в Delphiscript, возможно, Delphiscript не поддерживает строки символов с нулевым символом в конце, только строки в стиле Delphi, или, возможно, есть другой модуль, который вы можете использовать для доступа PChar,

Это сработало для меня, используя Delphi XE7

использует

Winapi.Windows, ShellApi, ...

Другие вопросы по тегам