Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kann externer Prozess nicht korrekt starten. (https://www.delphipraxis.net/16000-kann-externer-prozess-nicht-korrekt-starten.html)

Jelly 8. Feb 2004 18:37


Kann externer Prozess nicht korrekt starten.
 
Hallo,
ich hab irgendwo den unten stehenden Code her, weiss leider nicht mehr von wo, um externe Prozesse zu starten. Das Ganze klappt auch soweit ganz wunderbar. Jedoch habe ich versucht mittels mysql.exe eine Datenbank aus einem Dump zu erstellen.

Filename=c:\mysql\bin\mysql.exe -uroot -hlocalhost -pBLABLA meinedb < dump.sql

Gebe ich diesen Befehl direkt in einer Konsole ein, klappt das auch wunderbar. Über die RunProcess Methode jedoch nicht? RunProcess klappt, wie gesagt in allen anderen Fällen, die ich ausprobiert habe. Ich habe den Verdacht, es liegt an dem Zeichen < im Befehl... Kann das sein, oder hat jemand ne Erklärung für das Phänomen.

Noch ne Bemerkung: ein neuer Prozess WIRD gestartet, jedoch wird der Befehl eben nicht korrekt ausgeführt.

Gruß,
Tom


Delphi-Quellcode:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb         := SizeOf(StartupInfo);
  StartupInfo.dwFlags    := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;

fkerber 8. Feb 2004 18:45

Re: Kann externer Prozess nicht korrekt starten.
 
Hi!

Da Filename ein String ist:

Müssten da nicht Anführungszeichen stehen?

Ciao fkerber

Jelly 8. Feb 2004 18:48

Re: Kann externer Prozess nicht korrekt starten.
 
Zitat:

Zitat von fkerber
Müssten da nicht Anführungszeichen stehen?

Sorry, ist nur ein Tippfehler... Ganz exakt lautet der Befehl

Filename := "c:\mysql\bin\mysql.exe" -uroot -hlocalhost -pBLABLA meinedb < "i:\dump.sql"

Tom

fkerber 8. Feb 2004 18:55

Re: Kann externer Prozess nicht korrekt starten.
 
Hi!
Ja wenn ich einen String so definiere hagelts Fehlermeldungen:

Weil Teile der Anweisungen kein String sind:

Filename := "c:\mysql\bin\mysql.exe" -uroot -hlocalhost -pBLABLA meinedb < "i:\dump.sql"


Ciao fkerber

Jelly 8. Feb 2004 19:01

Re: Kann externer Prozess nicht korrekt starten.
 
Was ich sagen wollt ist einfach daß ich als Parameter Filename den genannten String übergebe. Es hagelt keine Fehlermeldungen. Wie ich in Delphi einen String definier weiss ich natürlich. Bei anderen Befehlen klappt die RunProcess Routine ja wunderbar, nur eben nicht, wie es scheint, wenn ich eine Datei mittels < im Befehl einlese.

Gruß,
Tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz