Предложения по сети с низкой задержкой (s / w и h / w)

Я' ■ «Запуск без отладки» наследует переменные среды IDE . Я пишу приложение Windows GUI, которое пытается вызвать сценарий Apache ANT. Сценарий ANT создаст и упакует группу проектов Delphi в окончательный файл setup.exe. Сборка сценария ANT Delphi 2007 / ...

Я пишу приложение с графическим интерфейсом пользователя для Windows, которое пытается вызвать сценарий Apache ANT. Сценарий ANT создаст и упакует группу проектов Delphi в окончательный файл setup.exe. Сценарий ANT создает приложение Delphi 2007/2010 и Delphi XE.

Мое приложение ANT с графическим интерфейсом пользователя скомпилировано и построено с помощью Delphi XE. Когда я использую «Запуск без отладки» в Delphi XE для запуска приложения, приложение не работает со сценарием ANT. Сценарий ANT не создает приложение, в котором DCU, BPL и EXE не компилируются в папку, которую я ожидал.

Однако если я запускаю свое приложение с графическим интерфейсом в проводнике Windows, сценарий ANT правильно построит приложение> Все DCU, BPL и EXE были созданы и хранятся в папке, которую я назначил.

После отладки приложения с графическим интерфейсом я обнаружил, что это приложение запускается с помощью Delphi " Запускать без отладки »наследует переменные среды от Delphi IDE. Вот как я извлекаю переменные среды:

function GetAllEnvVars(const Vars: TStrings): Integer;
var
  PEnvVars: PChar;    // pointer to start of environment block
  PEnvEntry: PChar;   // pointer to an env string in block
begin
  // Clear the list
  if Assigned(Vars) then
    Vars.Clear;
  // Get reference to environment block for this process
  PEnvVars := GetEnvironmentStrings;
  if PEnvVars <> nil then
  begin
    // We have a block: extract strings from it
    // Env strings are #0 separated and list ends with #0#0
    PEnvEntry := PEnvVars;
    try
      while PEnvEntry^ <> #0 do
      begin
        if Assigned(Vars) then
          Vars.Add(PEnvEntry);
        Inc(PEnvEntry, StrLen(PEnvEntry) + 1);
      end;
      // Calculate length of block
      Result := (PEnvEntry - PEnvVars) + 1;
    finally
      // Dispose of the memory block
      Windows.FreeEnvironmentStrings(PEnvVars);
    end;
  end
  else
    // No block => zero length
    Result := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetAllEnvVars(Memo1.Lines);
end;

Это список переменных среды для процесса, запущенного Delphi XE «Запуск без отладки»:

ActiveHostApplication=
ActiveProjectModule=
ALLUSERSPROFILE=C:\ProgramData
ANT_HOME=C:\Components\Components.d11\build.tool\apache-ant-1.7.1
ANT_OPTS=-Xmx512m
APPDATA=C:\Users\coder\AppData\Roaming
AQtime7_Product_Path=C:\Program Files (x86)\Automated QA\AQtime 7\Bin\
BDS=c:\program files (x86)\embarcadero\rad studio\8.0
BDSAppDataBaseDir=BDS
BDSBIN=c:\program files (x86)\embarcadero\rad studio\8.0\bin
BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\8.0
BDSINCLUDE=c:\program files (x86)\embarcadero\rad studio\8.0\include
BDSLIB=c:\program files (x86)\embarcadero\rad studio\8.0\lib
BDSPROJECTSDIR=C:\Users\coder\Documents\RAD Studio\Projects
BDSUSERDIR=C:\Users\coder\Documents\RAD Studio\8.0
CG_BOOST_ROOT=C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\include\boost_1_39
CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=OBSERVER
ComSpec=C:\Windows\system32\cmd.exe
DELPHI=c:\program files (x86)\embarcadero\rad studio\8.0

А это список переменных среды для процесса, запускаемого проводником Windows :

ALLUSERSPROFILE=C:\ProgramData
ANT_HOME=C:\Components\Components.d11\build.tool\apache-ant-1.7.1
ANT_OPTS=-Xmx512m
APPDATA=C:\Users\coder\AppData\Roaming
BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\5.0
CG_BOOST_ROOT=C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\include\boost_1_39
CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=OBSERVER
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO

Сравните 2 списка переменных среды, вы можете заметить, что есть несколько переменных, таких как BDSINCLUDE, а BDSBIN не существует в процессе, запущенном оболочкой Windows. Эти переменные среды из Delphi XE ' s IDE повлияла на сценарий ANT, который создает приложение Delphi 2007/2010. Моя проблема должна быть решена, если эти переменные среды IDE Delphi не отображаются в процессе.

Есть ли у кого-нибудь идеи, можно ли запустить процесс (запустить с отладкой или без нее) из среды Delphi IDE, которая не наследует переменные среды из Delphi IDE?

5
задан Chau Chee Yang 8 December 2010 в 02:17
поделиться