AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Aus Konsolenanwendung Programm starten und Ergebnis auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Aus Konsolenanwendung Programm starten und Ergebnis auslesen

Offene Frage von "VizeTE"
Ein Thema von VizeTE · begonnen am 11. Jan 2006 · letzter Beitrag vom 11. Jan 2006
Antwort Antwort
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Aus Konsolenanwendung Programm starten und Ergebnis auslesen

  Alt 11. Jan 2006, 10:25
Hallo,

ich möchte mit meiner Konsolenanwendung eine andere Konsolenanwendung starten und dann das Ergebnis einlesen. Bei der Delphi-Hilfe habe ich mir abgeguckt wie ich in der Konsole einen einfachen Text eingebe und den dann auslese:

Delphi-Quellcode:
procedure Test;
var
  AString: string;
begin
  Write('Enter a line of text: ');
  ReadLn(AString);
  WriteLn('You typed: ', AString);
  WriteLn('Hit <Enter> to exit');
  ReadLn;
end;
Niko hat mir in einem anderen Thread bereits gezeigt wie ich die Standardausgabe einlesen kann wenn meine Konsolenanwendung von einem anderen Prozess gestartet wird. Das Funktioniert auch prima.

Jetzt soll mein Konsolenprogramm aber selbst einen anderen Prozess starten und anschließend dessen Ergebnis auslesen.
Ich habe versucht das mit ShellExecuteEx hinzubekommen, leider mit wenig Erfolg.

Zum Hintergrund: Ich verwende Subversion und möchte mit meiner Konsolenanwendung Subversion nach einer Eigenschaft meiner Head-Revision fragen. Wenn ich das in der Kommandozeile eingebe sieht der Befehl wie folgt aus:

svn propget svn:log c:\projekte\test\repositorytest --revprop -r 6 Als Antwort bekomme ich eine neue Zeile in der Konsole mit dem Wert der angeforderten Eigenschaft und genau diese möchte ich gern einlesen und weiterverarbeiten.

Mein bisheriger Code sieht so aus:

Delphi-Quellcode:
procedure TestRun;
var
  ALine: string;
begin
  if RunExecutableAndWait('svn', 'propget svn:log c:\projekte\test\repositorytest --revprop -r 6') then
    ReadLn(ALine)
  else
    ALine := SysErrorMessage(GetLastError);
  WriteLn('Result: ', ALine);
  WriteLn('Hit <Enter> to exit');
  ReadLn;
end;

function RunExecutableAndWait(AExecutable, AParams: string): boolean;
var
  AProcessHandle : dword;
  AShellExecInfo : TShellExecuteInfo;
begin
  Result := false;

  FillChar(AShellExecInfo, SizeOf(AShellExecInfo), 0);

  with AShellExecInfo do
  begin
    cbSize := SizeOf(AShellExecInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    lpVerb := 'open';
    lpFile := PChar(AExecutable);
    lpParameters := PChar(AParams);
  end;

  if ShellExecuteEx(@AShellExecInfo) then
    AProcessHandle := AShellExecInfo.HProcess
  else
    Exit;

  while WaitForSingleObject(AProcessHandle, 50) <> WAIT_OBJECT_0 do
    Sleep(100);

  CloseHandle(AProcessHandle);

  Result := true;
end;
Funktioniert aber leider nicht.


Schon mal vielen Dank im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Aus Konsolenanwendung Programm starten und Ergebnis ausl

  Alt 11. Jan 2006, 10:38
Suche mal nach Hier im Forum suchenCreatePipe, ein Beispiel findest Du zB. hier: http://www.delphipraxis.net/internal...=344790#344790

Mit CreatePipe kann die Konsolenausgabe umgeleitet werden.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Aus Konsolenanwendung Programm starten und Ergebnis ausl

  Alt 11. Jan 2006, 12:20
Und um den Umgang mit Pipes angenehm zu gestalten gibts hier die Komponente "NPipe".
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#4

Re: Aus Konsolenanwendung Programm starten und Ergebnis ausl

  Alt 11. Jan 2006, 12:57
Von mir ganz gerne genommen:

TJvCreateProcess aus der Jedi Lib


Auch könnt ich mir vorstellen, das du nicht den Umweg über eine Konsole gehen musst, falls svn ein API zur verfügung stellt. Ich kenne svn zwr nicht, aber andere Versionsverwaltungssystem die ich kenne haben eine API



mfg

DerDan
nichts ist so schön wie man es sich vorstellt
  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 23:11 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