![]() |
Probleme mit Writeline
Hallo
so einfach und Delphi 2005 zeigt mir eine Fehlermeldung an, wenn ich eingebe:
Delphi-Quellcode:
Fehlermeldung:
Writeln('Bitte geben Sie die Anzahl der Gäste ein:');
Im Projekt Projekt2.exe ist eine Exception in der Klasse EInOutError mit der Meldung 'E/A Fehler 105' aufgetreten. |
Re: Probleme mit Writeline
Das ist aber eine Konsolenanwendung?
|
Re: Probleme mit Writeline
Hallo Sebastian,
Fehler 105 besagt, dass du die Datei (hier OUTPUT) nicht geöffnet hast.
Delphi-Quellcode:
Freundliche Grüße
{$APPTYPE CONSOLE}
var con: TextFile; n: Integer; begin Assign(con, 'con'); Rewrite(con); Writeln(con, 'Bitte geben Sie die Anzahl der Gäste ein:'); ReadLn(con, n); CloseFile(con); end; |
Re: Probleme mit Writeline
das sieht bei mir jetzt so aus
Delphi-Quellcode:
jetzt tritt Fehler 104 auf :gruebel:
program Project2;
{$APPTYPE CONSOLE} uses SysUtils; var con: TextFile; n: Integer; begin Assign(con, 'con'); Rewrite(con); Writeln(con, 'Bitte geben Sie die Anzahl der Gäste ein:'); ReadLn(con, n); CloseFile(con); end. |
Re: Probleme mit Writeline
Zitat:
Reset würde die Datei zum lesen öffnen.
Delphi-Quellcode:
Und wenn Du aus dem Textfile liest, kannst Du nur Strings auslesen.
Assign(con, 'con');
Rewrite(con); Writeln(con, 'Bitte geben Sie die Anzahl der Gäste ein:'); CloseFile(con); Reset(con); ReadLn(con, n); CloseFile(con); Wenn Du Integer haben willst, musst Du den String konvertieren (strtoInt). Vielleicht schreibst Du nochwas Du überhaupt machen willst. Ich habe fast den Eindruck Du willst etwas auf dem Bildschirm ausgeben und von dort etwas einlesen? Grüße Klaus |
Re: Probleme mit Writeline
Und Reset setzt nebenbei den Dateizeiger auf 0. Tipp: CON ist ein Pseudofile und Standardmäßig Read/Write-geöffnet.
|
Re: Probleme mit Writeline
Also, bei mir funktioniert es. Meine Hilfe meint zu writeln:
Zitat:
Delphi-Quellcode:
program Blubb;
uses SysUtils; {$APPTYPE CONSOLE} var s: string; begin writeln('Irgendwas eingeben:'); readln(s); writeln('Sie haben eingegeben: ' + s); readln; end. |
Re: Probleme mit Writeline
Dem Text nach zu Urteilen willst du den Text in einer Konsole ausgeben. Warum um Himmels Willen machst du den Umweg über CON?
Delphi-Quellcode:
Der Fehler liegt bestimmt nicht in der Writeln-Anweisung, da bleibt der Debugger wohl nur stehen.
program Project2;
{$APPTYPE CONSOLE} uses SysUtils; var n: Integer; begin Writeln('Bitte geben Sie die Anzahl der Gäste ein:'); end. |
Re: Probleme mit Writeline
Enteder komplett Konsolenanwendung, oder
![]() Aber vielleicht soll es auch gar keine Konsole werden :mrgreen: |
Re: Probleme mit Writeline
Zitat:
|
Re: Probleme mit Writeline
Zitat:
Delphi-Quellcode:
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.
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. Freundliche Grüße |
Re: Probleme mit Writeline
Noch mal: Warum dieser Umweg?
|
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 |
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 |
Re: Probleme mit Writeline
Zitat:
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:
und was ist 'ne Javakonsole? |
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:22 Uhr. |
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