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:
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;
beim Initiaisieren der
Unit wird ein Fenster mit der Komponente erzeugt und in dieses wird der Buffer ausgegeben
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