AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kann externer Prozess nicht korrekt starten.
Thema durchsuchen
Ansicht
Themen-Optionen

Kann externer Prozess nicht korrekt starten.

Ein Thema von Jelly · begonnen am 8. Feb 2004 · letzter Beitrag vom 8. Feb 2004
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Kann externer Prozess nicht korrekt starten.

  Alt 8. Feb 2004, 19:37
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;
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Kann externer Prozess nicht korrekt starten.

  Alt 8. Feb 2004, 19:45
Hi!

Da Filename ein String ist:

Müssten da nicht Anführungszeichen stehen?

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Kann externer Prozess nicht korrekt starten.

  Alt 8. Feb 2004, 19:48
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
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Kann externer Prozess nicht korrekt starten.

  Alt 8. Feb 2004, 19:55
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Kann externer Prozess nicht korrekt starten.

  Alt 8. Feb 2004, 20:01
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz