![]() |
Re: eigene Konsole -> writeln output ?
hab gedacht das hier reicht... :(
"Also bei ReadLn wird wohl die Open-Prozedur aufgerufen... nur was muss ich ändern/zurückgeben damit die "datei" als lesbar gilt ? " weil bei ReadLn Fehler 6 auftritt. Und genau dieses Readln tut eben nicht. *grübeö* wwwiiiessooo :gruebel: |
Re: eigene Konsole -> writeln output ?
Zitat:
|
Re: eigene Konsole -> writeln output ?
sorry. Also es geht darum dass ein Fehler bei Readln auftritt. Ich weiß nicht wie ich ein Lesen realisieren soll. Testweise könnte man auch 'Test' in den Buffer schreiben.
Ich weiß allerdings nicht wo das Programm mit dem Fehler abbricht. Kleine Änderung:
Delphi-Quellcode:
Function ConsoleIn(var F: TTextRec): Integer;
begin // ??? Result := 0; end; Function ConsoleOut(var F: TTextRec): Integer; begin if not killed then ConsoleWin.proto.AddLine(F.Buffer,BackgroundColor,TextColor); FillChar(F.Buffer,F.BufPos-1,0); F.BufPos := 0; Result := 0; end; Function ConsoleIgnore(var F: TTextRec): Integer; begin Result := 0; end; Function DevOpen(var F: TTextRec): Integer; begin with F do begin BufPos := 0; BufEnd := 0; case Mode of fmInput: begin InOutFunc := @ConsoleIn; FlushFunc := @ConsoleIgnore; end; fmOutput: begin InOutFunc := @ConsoleOut; FlushFunc := @ConsoleOut; end; fmInOut: begin Mode := fmOutput; InOutFunc := @ConsoleOut; FlushFunc := @ConsoleOut; end; else Result := 1; Exit; end; end; Result := 0; end; |
Re: eigene Konsole -> writeln output ?
Bin ich blind oder kommt in deinem geposteten Beispiel kein Readln vor?
|
Re: eigene Konsole -> writeln output ?
ich hab bis jetzt nur den Konsolencode gepostet. okay und das Prog schaut so aus:
Delphi-Quellcode:
program Project1;
uses Windows,messages,CConsole; var msg:TMsg; a: string; begin write('testing, testing.... *hust*'); TextColor := $FF0000; write('.... everything seems to be in order'); TextColor := $00FF00; BackgroundColor := $505050; write('Console test done.'); sleep(1000); readln(a); write('Readln Successful !!!'); while GetMessage(msg,0,0,0) do // aufhängen^^ begin TranslateMessage(msg); DispatchMessage(msg); if not IsWindowVIsible(msg.hwnd) then break; // bis das Konsolenfenster geschlossen ist end; end. |
Re: eigene Konsole -> writeln output ?
Ich kann in deinem Code kein {$APPTYPE CONSOLE} finden. Ist das Ausgabe-Fenster kein Windows-Konsolenfenster, sondern dein eigenes Fenster? Wenn ja, hast du StdInput- StdOutput Handle gesetzt?
|
Re: eigene Konsole -> Readln Problem
Richtig. Ich will mein eigenes Konsolenfenster verwenden, und wie in dem 2. Screenshot zu sehen ist funktioniert es über die Standardausgabedatei Output recht gut. Das Schreiben zumindest. Zum schreiben wird über Umwege ( F.FlushFunc enthält die Funktion, die folgendes aufruft : )
Delphi-Quellcode:
beim Initiaisieren der Unit wird ein Fenster mit der Komponente erzeugt und in dieses wird der Buffer ausgegeben
Function ConsoleOut(var F: TTextRec): Integer;
var IsLn: Boolean; begin if (F.Buffer[F.BufPos-2] = #13) and (F.Buffer[F.BufPos-1] = #10) then begin IsLn := true; // future purpose F.Buffer[F.BufPos-2] := #0; end; if not killed then ConsoleWin.proto.AddLine(F.Buffer,BackgroundColor,TextColor); FillChar(F.Buffer,F.BufPos-1,0); F.BufPos := 0; Result := 0; end; Nur ein Lesen könnte man über Abfangen der WM_KEYDOWN messages in einem Loop realisieren, jedoch wird die Leseprozedur Function ConsoleIn(var F: TTextRec): Integer; nicht aufgerufen. Es wird nichtmal die InOutFunc aufgerufen oder die FlushFunc. OpenFunc auch nicht. Also frag ich mich was da geschieht das das Programm mit einem Fehler abbricht. Vielleicht muss ich auch F.Flags setzen ( wenn ich wüsste welche Flags zu setzen wären ) Also Wo steckt der Fehler ? E/A Fehler 6 |
Re: eigene Konsole -> Readln Problem
au meine fresse... sag nich es gibt extra input... neeiiiinn.... mom
|
Re: eigene Konsole -> Readln Problem
okay also die Blindheit geht mal heute klar an mich ^^
Delphi-Quellcode:
bleibt jetzt nur noch das Problem, dass nichts gelesen wird
AssignDev(Output);
AssignDev(Input); |
Re: eigene Konsole -> Readln Problem
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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