![]() |
eigene Konsole -> Readln Problem
Hi Leute :)
Ich steh mal wieder vor einem kleinen Problemchen und bevor es mich wieder die ganze Nacht kostet hoff ich dass ihr mir da weiterhelfen könnt ^^ "Wird F weggelassen, wird die globale Variable Output verwendet, die auf die Standardausgabedatei der Prozesse zugreift. Beim Einsatz von Output in GUI-Anwendungen muss auf ein spezielles Vorgehen geachtet werden." "spezielles Vorgehen" ? Also wie stell ich dass an eigene Prozeduren fürs Schreiben und Lesen umzusetzen ? Was hat es mit dieser Dateivariable auf sich ? Edit: Die Hilfe meint noch weiter: "Unter Windows haben die meisten Prozesse keine Standardausgabedatei und das Schreiben in Output löst einen Fehler aus. Wenn Delphi-Programme als Konsolenanwendungen gelinkt sind, verfügen sie über eine Standardausgabedatei." Nur wie stellt delphi das an ? Ich hätte da gern meine eigene Konsole ^^ |
Re: eigene Konsole -> writeln output ?
Dies dürfte entweder über Pipes, nachzuschlagen unter
![]() ![]() PS: Fürdie Standardkonsole reicht wentweder {$APPTYPE CONSOLE} oder eine Kombination von AllocConsole und FreeConsole. |
Re: eigene Konsole -> writeln output ?
Liste der Anhänge anzeigen (Anzahl: 1)
cool thx gleich mal gucken... btw state-of-the-art is ne nonvcl-kompo die so ausschaut ^^
|
Re: eigene Konsole -> writeln output ?
Wie hast du das bwerkstelligt? Das Problem bei Pipes ist nämlich, das die zunächst nur zweifarbig funktionieren.
|
Re: eigene Konsole -> writeln output ?
bis jetzt wird die Konsole noch als Objekt angesprochen und nicht über die Standardausgabedatei, da bin ich gerade dabei, aber ich werds in ne Unit packen und dann kann man die Farbparameter über das Objekt anpassen. Mal sehn wie weit ich jetzt komm :) stay tuned
|
Re: eigene Konsole -> writeln output ?
noch n btw: jemand lust mir bei meiner component library zu helfen ^^ awas kleiner Scherz ;)
|
Re: eigene Konsole -> writeln output ?
Liste der Anhänge anzeigen (Anzahl: 1)
sodele... es beginnt zu funktionieren..
Delphi-Quellcode:
write('testing, testing.... *hust*');
TextColor := $FF0000; write('.... everything seems to be in order'); TextColor := $00FF00; BackgroundColor := $505050; write('Console test done.'); ich weiß... Zeilenumbrüche fehlen halt ^^ gemach gemach :D Jetzt wie mach ich Readln ? läuft doch bestimmt auch wieder über InOut ? schaut dann so aus: |
Re: eigene Konsole -> writeln output ?
danke erst mal das ich so weit gekommen bin.
und weiter gehts mit der fragerei ^^ Also bei ReadLn wird wohl die Open-Prozedur aufgerufen... nur was muss ich ändern/zurückgeben damit die "datei" als lesbar gilt ? kleiner Einblick in den Code :
Delphi-Quellcode:
unit CCONSOLE;
interface var TextColor, BackgroundColor: Cardinal; implementation uses ConsoleWnd; var ConsoleWin : TConsoleWnd; killed: Boolean; Function DevOpen(var F: TTextRec): Integer; begin // und was geht hier ??? result :=0; end; Function DevInOut(var F: TTextRec): Integer; begin case f.Mode of fmOutput: begin if not killed then ConsoleWin.proto.AddLine(F.Buffer,BackgroundColor,TextColor); end; fmInput: begin end; fmInOut: begin end; end; result :=0; end; Function DevFlush(var F: TTextRec): Integer; begin case f.Mode of fmOutput: begin DevInOut(F); FillChar(F.Buffer,F.BufPos-1,0); F.BufPos := 0; end; fmInput: begin end; fmInOut: begin end; end; result :=0; end; Function DevClose(var F: TTextRec): Integer; begin result :=0; end; procedure AssignDev(var F: Text); begin with TTextRec(F) do begin Mode := fmClosed; BufSize := SizeOf(Buffer); BufPtr := @Buffer; OpenFunc := @DevOpen; InOutFunc := @DevInOut; FlushFunc := @DevFlush; CloseFunc := @DevClose; Name[0] := #0; end; end; initialization ConsoleWin := TConsoleWnd.Create(0); ConsoleWin.Caption := system.ParamStr(0)+ ' - NVConsole'; ConsoleWin.Show; ConsoleWin.proto.AddLine('NonVCL Console by hbw-technology 2005 ',$0,$00C000); ConsoleWin.proto.AddLine('',0,0); AssignDev(Output); finalization killed:= true; end. |
Re: eigene Konsole -> writeln output ?
ja leute ich bin imma noch nich weiter hiiiiiiiiiiiiiiiiiilfeeee ^^
|
Re: eigene Konsole -> writeln output ?
Zitat:
Zitat:
Delphi-Quellcode:
var
S: String; begin Readln(S); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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