AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Cmd in eine Delphi-Applikation integrieren?

Ein Thema von DelphiCreak · begonnen am 4. Aug 2010 · letzter Beitrag vom 6. Aug 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#11

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 5. Aug 2010, 18:12
Ich möchte mal diesen Thread in den Raum werfen: http://www.delphipraxis.net/134827-d...-umleiten.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#12

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 5. Aug 2010, 18:13
Es ist nicht zu empfehlen, den Umweg über eine temporäre Datei zu gehen. Das erzeugt nur unnötige Festplattenabnutzung...
Das mit der Festplattenabnutzung ist jetzt aber nicht Dein Ernst.
... bremst zudem die Ausgabe aus, da die Festplatte erheblich langsamer ist als der Arbeitsspeicher. Außerdem bekommt man den Inhalt so erst, wenn der Prozess beendet ist.
Nur er hat ja nicht so richtig beschrieben, ob er nur das Ergebnis haben möchte oder den Ablauf 1:1 wie es in der Eingabeaufforderung auftaucht.

[edit]
Und wenn du meinen Code mal mit dem von dir verlinkten vergleichst, wirst du feststellen, dass beide fast identisch sind, nur dass ich mir den Umweg über die Datei spare und stattdessen direkt in eine Pipe umleite, die ich dann auslese.
[/edit]
Das mag ja sein, ich wollte halt auch nur eine andere Variante aufzeigen wie es geht.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
DelphiCreak

Registriert seit: 3. Sep 2008
51 Beiträge
 
Delphi 2007 Enterprise
 
#13

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 5. Aug 2010, 18:38
Ich habe gerade in einem anderem Forum gefunden, dass erst eine gewisse Buffergröße erreicht werden muss, bevor die Ausgabe auf der Festplatte geschieht. Weiß jemand von euch einen weg, das zu umgehen? Oder erstmal ob da mein Problem liegt?

Danke für die bisherige Hilfe schonmal
Dominik C.
Orientierungslos sieht man mehr vom Leben.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 5. Aug 2010, 18:46
Gibt es eine Möglichkeit bei deiner Unit, die Konsole sichtbar zu starten? Um zu überprüfen was denn in dieser steht?
Und ich bekomme bei deinem Script die Meldung, dass FRedirector keine entsprechende Komponente besitzt und ob die Deklaration entfernt werden solle. Lässt sich dieser Fehler vermeiden?
Sorry, den Post habe ich irgendwie überlesen.

Zu 1.: Sollte möglich sein, wenn du in der Methode TConsoleRedirector.StartProcess in der Zeile StartupInfo.wShowWindow := SW_HIDE; SW_HIDE durch SW_SHOW ersetzt.

Zu 2.: Ich vermute, du hast FRedirector in der Klassendefinition in dem gleichen Abschnitt deklariert, wo die ganzen Komponenten aufgelistet sind? Verschieb sie mal in den private - oder public -Abschnitt.
  Mit Zitat antworten Zitat
DelphiCreak

Registriert seit: 3. Sep 2008
51 Beiträge
 
Delphi 2007 Enterprise
 
#15

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 5. Aug 2010, 18:55
Vielen Dank, die beiden kleineren Probleme sind gelöst
Auch deine Funktion liefert die Ausgabe ins Memo-Feld erst, wenn das Programm beendet wird. (Konnte ich vorher nicht, da das Programm an einer bestimmten Stelle auf etwas wartet.)
Irre ich mich, oder gibt es bei deiner Version keine Möglichkeit, die Ausführung der cmd so zu beenden wie über das normale "Schließen"? Alles was ich finden kann sind Terminate und Destroy, welche beide die Ausgabe am Ende nicht erreichen.
Dominik C.
Orientierungslos sieht man mehr vom Leben.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 5. Aug 2010, 19:08
Sollte eigentlich mit Terminate gehen. Kann ich nachher mal testen...
  Mit Zitat antworten Zitat
DelphiCreak

Registriert seit: 3. Sep 2008
51 Beiträge
 
Delphi 2007 Enterprise
 
#17

AW: Cmd in eine Delphi-Applikation integrieren?

  Alt 6. Aug 2010, 18:32
Ich habe jetzt im Moment 3 Möglichkeiten:
Mit der Komponente DosCommand (die 2009er-Version aus dem Thread, der oben von DeddyH verlinkt wurde)
Mit der Unit unConsoleRedirector von Namenlozer
und
die Funktion GetConsoleOutput.
Alle 3 liefern mir die Ausgabe erst, wenn das Programm beendet wurde, und auch nur, wenn ich das Fenster sichtbar starte und dann über "Schließen" die Konsole wieder schließe.
Mit dem DosCommand-Befehl "Stop" wird zwar das Programm beendet, die Ausgabe jedoch nicht übergeben.

Bei anderen cmd-Programmen wir "ping www.google.de" funktionieren alle 3 Möglichkeiten tadellos, nur bei meinem Programm anscheinend nicht. Fällt irgendjemandem etwas ein, woran das liegen könnte?
Mein Programm kompiliert ein in Phyton geschriebenes Programm und startet dieses dann. Alles bleibt jedoch im Fenster der cmd. Beim normalen Starten sieht man die Ausgabe, und wie gesagt, bei normalem Beenden des Programms kommt die Ausgabe nicht über. Nur nicht zur Laufzeit -.-"
um auf RWarnecke zurückzukommen: Es wäre schön, wenn jede Zeile direkt zur Laufzeit überkommen würde. Eben wenn sie auch im cmd-Fenster erscheint.
Dominik C.
Orientierungslos sieht man mehr vom Leben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:18 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