AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie die Error-Ausgabe erstellen im Konsolenprogramm??
Thema durchsuchen
Ansicht
Themen-Optionen

Wie die Error-Ausgabe erstellen im Konsolenprogramm??

Ein Thema von Kedariodakon · begonnen am 22. Nov 2004 · letzter Beitrag vom 23. Nov 2004
Antwort Antwort
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 22. Nov 2004, 12:53
Ok folgendes:
Ich möchte in meinem Konsolen Programm eine Error-Ausgabe haben!
Ok mal an einem Beispiel erklären was das ist:

Tipt mal in der CMD folgendes ein: Dir C:\haumichtod 1>AusgabeNormal.txt 2>AusgabeError.txt + Enter

Nun werden die Ausgaben in die Textdatein umgeleitet, "AusgabeNormal.txt" ist die normale "AusgabeError.txt" die Error...

Da es bei euch diese haumichtod Datei nicht geben sollte, habt ihr in beiden Datein was drinn...

Wie bekomm ich das hin, das ich in meinem Konsolen-Programm was in die Error-Ebene reinschreiben kann?

Mit Delphi-Referenz durchsuchenWriteln() schreib ich nur in die normale...



Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 22. Nov 2004, 13:11
IMHO sollte das so gehn...
WriteLn(ErrOutput, 'Test');
Manuel Pöter
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 22. Nov 2004, 13:12
Write{Ln} nimmt als ersten Parameter auch eine Datei, die du mit Delphi-Referenz durchsuchenAssignFile öffnen kannst. Du öffnest also beide Dateien und schreibst entsprechend mit WriteLn(Normal, 'etwas') und WriteLn(Error, 'Fehler').
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#4

Re: Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 22. Nov 2004, 13:27
Du musst das Handle von stderr ermitteln und Deiner Ausgabedatei entsprechend zuweisen:

Delphi-Quellcode:
program test_stderr;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

var
  stderr: TextFile;
  handle: Integer;

begin
  AssignFile(stderr,'CONOUT$');
  ReWrite(stderr);
  handle := TTextRec(stderr).Handle;
  TTextRec(stderr).Handle := Integer(GetStdHandle(STD_ERROR_HANDLE));
  WriteLn('Dies geht nach stdout');
  WriteLn(stderr,'Dies geht nach stderr');
  TTextRec(stderr).Handle := handle;
  CloseFile(stderr);
end.
Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 22. Nov 2004, 14:09
Zitat von Motzi:
IMHO sollte das so gehn...
WriteLn(ErrOutput, 'Test');
Das Funzt


Zitat von Marcel Gascoyne:
Du musst das Handle von stderr ermitteln und Deiner Ausgabedatei entsprechend zuweisen:

Delphi-Quellcode:
program test_stderr;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

var
  stderr: TextFile;
  handle: Integer;

begin
  AssignFile(stderr,'CONOUT$');
  ReWrite(stderr);
  handle := TTextRec(stderr).Handle;
  TTextRec(stderr).Handle := Integer(GetStdHandle(STD_ERROR_HANDLE));
  WriteLn('Dies geht nach stdout');
  WriteLn(stderr,'Dies geht nach stderr');
  TTextRec(stderr).Handle := handle;
  CloseFile(stderr);
end.
Gruß,
Marcel
Das sieht komplizierter aus
Aber ich werd es mir mal anschaun...

Gibt es den Situationen, wo Motzi's Version nicht geht und ich lieber Marcel Gascoyne's nehmen sollte?

Werden die Konsolenausgaben als Textdadei behandelt?
Da bin ich noch nicht ganz hinter gestiegen...

Bye

Edit1: In welcher *.pas finde ich die SDK Function GetStdHandle
Edit2: In der Windows.pas, wer lesen kann ist klar im Vorteil...
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 22. Nov 2004, 17:24
In der Unit System gibt es 3 Variablen:
Delphi-Quellcode:
  Input: Text; { Standard input }
  Output: Text; { Standard output }
  ErrOutput: Text; { Standard error output }
Diese kapseln die 3 Standard-Handles für (Überraschung ) Input, Output und Error. Wird bei Write(Ln)/Read(Ln) als erster Parameter kein TextRec oder FileRec übergeben setzt der Compiler automatisch entsprechend Output oder Input ein - entsprechend kannst du einfach ErrOutput verwenden. Denke nicht, dass es da irgendwo Probleme geben sollte..!
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Wie die Error-Ausgabe erstellen im Konsolenprogramm??

  Alt 23. Nov 2004, 08:26
Gut dann bleib ich bei der einfachen Methode, obwohl die andere auch funzt!
Also Dank an beide

So ich mus weiter


Bye
Christian
  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 18:51 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