Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi eigene Konsole -> Readln Problem (https://www.delphipraxis.net/37267-eigene-konsole-readln-problem.html)

hboy 4. Jan 2005 02:51

Re: eigene Konsole -> Readln Problem
 
tja.... achten .. wie setz ich die dann ? angenommen ich wollte mal nen kleinen Teststring zurückgeben ?

Delphi-Quellcode:
  s := 'Zu übergebender String';
  F.BufPos := length(s)-1;
  Move(s[1],F.Buffer[0],length(s)-1);
  Result := 0;

aber da kommt nix an

Delphi-Quellcode:
  readln(s);
  writeln('s entählt: "',s,'"');

""

hboy 4. Jan 2005 03:35

Re: eigene Konsole -> Readln Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
also es kommt nix an weil ich nich weiß wie ich BufPos und BufEnd setzen muss. BufSize bleibt glaub ich kostant.

So schauts aus bis jetzt. Jetzt kann man auch Text eintippen :) er wird nur noch nich zurückgegeben.

hboy 4. Jan 2005 12:27

Re: eigene Konsole -> Readln Problem
 
und es kommt noch besser. Offensichtlich ( ich hab 2k ) scheint unter win xp gar keine Eingabe aufzutauchen, das Fenster schließt sich einfach wieder. Hab ich irgend ne Message vergammelt ?

also was noch nicht tut ist ConsoleIn:

Delphi-Quellcode:
Function ConsoleIn(var F: TTextRec): Integer;
var
  Msg:TMsg;
  s: string;
begin
  s:='';
  ConsoleWin.proto.AddLine('_',BackgroundColor,TextColor);
  while GetMessage(msg,0,0,0) do // aufhängen^^
  begin
    if msg.message = WM_CHAR then
    begin
      Case msg.wParam and $FF of
        8: begin
              if length(s) <>0  then setlength(s,length(s)-1);
            end;
        13: break;
        else s := s + chr(msg.wParam);
      end;
      ConsoleWin.proto.AddLine(s,BackgroundColor,TextColor,true);
    end;

    if IsWindowVIsible(msg.hwnd) then
    begin
      TranslateMessage(msg);
      DispatchMessage(msg);
    end
    else
      break; // bis das Konsolenfenster geschlossen ist
  end;
  ConsoleWin.proto.AddLine(s,BackgroundColor,TextColor,true);

  Move(s[1],F.BufPtr^,length(s));
  ///F.BufPos := ???;
  ///F.BufEnd := ???;
  Result := 0;
end;
kann mir jemand sagen wie ich die BufPos und BufEnd Variablen setzen muss ? Und wieso bricht bei XP der Message Loop ab ? wenn es überhaupt so weit kommt ( es also schon vorher abbicht )

hboy 4. Jan 2005 13:14

Re: eigene Konsole -> Readln Problem
 
mal nebenbei für alle die das in der Codeschlacht hier mal testn wollen hier das Programm.
Tut bei 2000 aber offenbar bei XP nicht :( testets mal bitte. Jemand ne Idee woran das liegt ?

[altes attachment entfernt]

hboy 5. Jan 2005 11:56

Re: eigene Konsole -> Readln Problem
 
also meine lieben Programmierkünstler :) ich habs jetzt soweit feritg. Es fehlt noch die Prozessbeendung beim Schließen des Fensters aber sonst isses fertig !
War zwar ein wenig tricky rauszufinden was man mit dem Buffer tun muss aber es lefft.
Danke an alle die mitgeholfen ham :) :dp: :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz