![]() |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
die frage is ja gerade wie ich es dann realisier. bis jetzt gibts den Message loop nur beim Lesen einer Eingabe. Naja ich werds wohl in nen separaten thread packen und etwas umschreiben dann müsst es gehn :)
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
Delphi-Quellcode:
das hier ist irgendwie quatsch :( kA wieso
procedure TConsoleWnd.ProcessMessage;
var msg: TMsg; begin if GetMessage(msg,0,0,0) then begin TranslateMessage(msg); DispatchMessage(msg); end; end; procedure MessageProc(param: Cardinal); begin while true do TConsoleWnd(param).ProcessMessage; end; procedure TConsoleWnd.SetUseMessageThread(doit: Boolean); begin if (self.fUseMessageThread = false) and doit then begin BeginThread(nil,0,@MessageProc,@self,0,TID); end; if (self.fUseMessageThread = true) and (not doit) then begin TerminateThread(TID,0); end; end; |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Mooooment, wo ist denn der I/O mit den Pipes?
Also die Nachrichtenschleife hast du ja in einem Extra-Thread - dort kannst du dann simultan auf Events und Messages warten. |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
... nur dass da keine Messages behandelt werden :( es lassen sich einfach keine abfragen. wieso ?
und der rest läuft über ... mom
Delphi-Quellcode:
Function DevOpen(var F: TTextRec): Integer;
begin result :=0; end; Function DevInOut(var F: TTextRec): Integer; begin case f.Mode of fmOutput: ConsoleOut(F); fmInput : ConsoleIn (F); fmInOut : ConsoleOut(F); end; result :=0; end; Function DevFlush(var F: TTextRec): Integer; begin DevInOut(F); FillChar(F.Buffer,F.BufPos-1,0); F.BufPos := 0; 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.UseMessageThread := true; ConsoleWin.proto.AddLine('NonVCL Console v0.1 2005 ',$0,$00C000); ConsoleWin.proto.AddLine('',0,0); AssignDev(Output); AssignDev(Input); finalization killed:= true; end. tadaa... |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Deine Anwendung ist also bereits eine Fensteranwendung? In diesem Falle gibt es bereits eine Message-Loop und diese müßtest du benutzen. Ich ging davon aus, daß du mit Pipes arbeitest. Sieht aber nicht danach aus, wenn ich mir den obigen Code anschaue.
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
nur dass das Fenster NonVCL is...
PS: also wenn da einer wäre hätte ich den selber programmiert und wüsste es :) |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
es gibt keinen ! oder doch ?...
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 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