Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit Writeline (https://www.delphipraxis.net/106460-probleme-mit-writeline.html)

marabu 11. Jan 2008 10:18

Re: Probleme mit Writeline
 
Zitat:

Zitat von STS301
... jetzt tritt Fehler 104 auf

Mein Fehler - ich habe den Code für die Konsolenausgabe aus einem meiner Filterprozesse zusammenkopiert und das ReadLn() einfach ohne großes Nachdenken dazugeschrieben. Da du Lesen und Schreiben möchtest brauchst du zwei Kanäle:

Delphi-Quellcode:
program Demo;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  conIn, conOut: TextFile;
  n: Integer;

begin
  AssignFile(conIn, 'con:');
  Reset(conIn);
  AssignFile(conOut, 'con:');
  Rewrite(conOut);
  Write(conOut, 'Number: ');
  ReadLn(conIn, n); // ... look ma - no hands
  Write(conOut, 'Press ENTER to proceed...');
  ReadLn(conIn);
  CloseFile(conOut);
  CloseFile(conIn);
end.
Die Verwendung der vordefinierten Dateivariablen input und output vermeide ich bei interaktiven Konsolanwendungen, da ich sie in der Regel für eine unabhängige I/O-Redirection benötige.

Freundliche Grüße

Luckie 11. Jan 2008 10:19

Re: Probleme mit Writeline
 
Noch mal: Warum dieser Umweg?

marabu 11. Jan 2008 11:38

Re: Probleme mit Writeline
 
Hallo Michael,

Umweg scheint mir nicht das passende Wort zu sein. In meinen Konsolenanwendungen sind die beiden File-Variablen INPUT und OUPUT für Piping und Redirection reserviert, Fortschrittsanzeige, Meldungen und Benutzerabfragen sollen aber unbedingt auf der Konsole ausgegeben werden. Die Deklaration und Verwendung von conIn und conOut ist für mich eher eine Frage der Quelltext-Hygiene, aber das sind persönliche Wahrnehmungen.

Hätte ich in meinem Beispiel input und output verwendet, dann hätte ich erklären müssen, warum das unter gewissen Umständen nicht das erwartete Ergebnis bringt. Das wollte ich vermeiden.

Jetzt musste ich doch noch erklären - und sogar zweimal.

Freundliche Grüße

STS301 11. Jan 2008 13:58

Re: Probleme mit Writeline
 
aha so funktioniert es also, ich habe gedacht, die Writeln öffnet sich wie im VB eine Inptubox

@Luckie:

mit deiner Methode zeigt er mir die Konsole auch nur den Bruchteil einer Sekunde an und verschwindet dann wieder.

mit der Methode von DeddyH funktioniert es


Frage: kann man zu Beispiel eine Javakonsole damit öffnen (wills nur wissen ob es geht, wenn ja wie)
Bitte keine Fragen 'Wofür?' :-D

himitsu 11. Jan 2008 14:13

Re: Probleme mit Writeline
 
Zitat:

Zitat von STS301
@Luckie:

mit deiner Methode zeigt er mir die Konsole auch nur den Bruchteil einer Sekunde an und verschwindet dann wieder.

klar, weil das Programm sofort danach fertig ist mit der Arbeit und sich beendet.

wenn du das Programm von einer bestehenden Konsole (z.B. direkt CMD.exe) aus aufrufst, dann bleibt der Text länger da

oder du läßt das Programm selber warten.
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses SysUtils;

begin
  Writeln('Bitte geben Sie die Anzahl der Gäste ein:');
  ReadLn(); // auf [Enter] drücken zum Beenden, oder Konsolenffenster schließen [X]
end.


Zitat:

Zitat von STS301
Frage: kann man zu Beispiel eine Javakonsole damit öffnen (wills nur wissen ob es geht, wenn ja wie)
Bitte keine Fragen 'Wofür?' :-D

wofür?

und was ist 'ne Javakonsole?

STS301 11. Jan 2008 14:26

Re: Probleme mit Writeline
 
Java hat in der Entwicklungsumgebung keine Userform (oder Form wie in Delphi), sondern, man benötigt eine vorprogrammierte Konsole, die dann aussieht wie eine Lehre Delphikonsole (wenn man sie startet, mit dem Code, dass die Konsole nur geöffnet werden soll)

wirklichen Gedanken warum habe ich mir auch noch nicht gemacht, aber wenn, wie würde es funktionieren


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 Uhr.
Seite 2 von 2     12   

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