Einzelnen Beitrag anzeigen

Kill0r

Registriert seit: 5. Jun 2005
Ort: Zürich
50 Beiträge
 
Delphi 2010 Professional
 
#1

Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 17:01
Hi ich bins mal wieder
Es geht mal wieder um ein eher gedankliches Problem
Es geht um folgendes:
Ich bin daran ein Matrix-like Chat zu schreiben, also schwarzer Hintergrund, Vollbild und grüne Schrift. (NEIN, das Problem ist nicht wie bei veilenm anderen die Verbindung, die funktioniert perfekt )
Soweit kein Problem, ich habe das mit einem grossen Memo das den ganzen Bildschirm ausfüllt gelöst.
Ich übernehme die Eingabe auch selber, damit ich besser eingreifen kann (z.B. das man nicht schon stehender Text einfach löschen kann)
Ausserdem lasse ich den Text "hinschreiben", also so wie man es vielleicht aus diversen Hackerfilmen oder so kennt, also der Text nicht sofort erscheint sondern Zeichen für Zeichen.
Hier mal veranschaulicht in einem Video: Matrix Chat

Das Schreiben des Textes geschieht mittels eines Timers, der Code dazu:
Delphi-Quellcode:
procedure TfrmChat.timWriteTimer(Sender: TObject);
var
  DelCursor: string;
begin
  if Length(ToWrite) > 0 then
  begin
    DelCursor := memChat.Lines.Text;
    if Phase < 4 then
    begin
      SetLength(DelCursor,Length(DelCursor)-1);
    end
    else
    begin
      SetLength(DelCursor,Length(DelCursor)-3);
    end;
    memChat.Lines.Text := DelCursor;
    if Phase < 4 then
    begin
      memChat.Lines.Text := memChat.Lines.Text + Copy(ToWrite,0,1)+#95;
    end
    else
    begin
      memChat.Lines.Text := memChat.Lines.Text + Copy(ToWrite,0,1)+#95+#10;
    end;
    Delete(ToWrite,1,1);
    CanType := false;
  end
  else
  begin
    CanType := true;
  end;
end;
ToWrite ist ein String der den Text enthält, der geschrieben werden soll, es wird immer jeweils ein Zeichen am Anfang gelöscht bis er leer ist.
Wenn CanType = true ist dann kann Text eingegeben werden, ansonsten nicht.
Der eingegebene Text wird in der Variable Input gespeichert, so ist es einfacher für mich den Text auszulesen weil ich nix parsen muss
Ich würde noch gerne den Quellcode von der Tastenabfrage hier rein stellen aber ich denke er ist zu gross deshalb hier nur einen Link ohne Highlighting: Quellcode von FormKeyPress
Falls dennoch gewünscht wird ihn hier rein zu stellen und auch die Moderatoren einverstanden sind, dann wedre ich das tun.

So nun zum Problem:
Ich will während oben irgendwelcher Text hingeschrieben wird (von einem anderen Chatpartner zum Beispiel) dass man trotzdem eine Zeile weiter unten normal weiterschreiben kann.
Ich kanns mir gedanklich einfach nicht vorstellen wie ich das bewerkstelligen soll

Ich weiss es war jetzt ziemlich viel Text, tut mir auch wirklich leid aber ich konnte mich nicht kürzer fassen damit ihr versteht was ich machen will. Falls irgendwelche Fragen bestehen einfach stellen.

So, ich danke hier schon mal fürs Durchlesen und ich hoffe auf eure Hilfe

Cu
Kill0r
  Mit Zitat antworten Zitat