Hey
Danke für eure Bemühungen, aber ich glaube nicht, dass mir das wirklich weiterhelfen wird.
Meine aktuelle Prozedur (mit eingefügtem Application.ProcessMessages) sieht so aus:
Delphi-Quellcode:
function TUser.WaitForUserInput: String;
begin
InputString := '';
NextKey := '';
EnableInput;
while InputEnabled do
begin
Application.ProcessMessages;
if NextKey = #8 then
begin
SetLength(InputString, Length(InputString)-1);
DrawInput;
NextKey := '';
end
else
if not (NextKey = '') then
begin
InputString := InputString + NextKey;
DrawInput;
NextKey := '';
end;
end;
Result := InputString;
end;
Hatte Application.ProcessMessages schon mal drin, aber dann rattert er einfach durch (führt AskServerOrClient bereits aus) und bleibt nicht stehen. Ausserdem scheint mir das nicht die optimale Lösung.
Hier noch die FormKeyPress Prozedur:
Delphi-Quellcode:
procedure TfrmChat.FormKeyPress(Sender: TObject; var Key: Char);
begin
User.CheckKey(Key);
end;
Und noch die User.CheckKey Prozedur:
Delphi-Quellcode:
procedure TUser.CheckKey(Key: Char);
begin
if InputEnabled then
begin
if Key = #13 then
begin
User.DisableInput;
end
else
begin
NextKey := Key;
end;
end;
end;
Ich nehme mir mal das Problem mit dem Durchlaufen vor, zumindest das sollte ja nicht passieren.
Solltet ihr noch irgendwelchen Code brauchen, sagt Bescheid. Dies ist zumindest meiner Ansicht nach der wichtigste Teil.
Ausserdem: Gibt es vielleicht eine Art getch(); Befehl um eine Taste abzufragen für Delphi? Bin bei meiner Google Suche darauf gestossen, leider gibts den Befehl anscheinend nur in C++. GetAsyncKeyState bringt mich nicht wirklich weiter, alle Tasten per Polling abzufragen ist nicht gerade besser
Dann hätte ich eben eine Idee um das Problem mit einem Thread zu lösen.
Cu
Kill0r