AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Konsole: Problem bei der Eingabe

Ein Thema von Kill0r · begonnen am 19. Apr 2006 · letzter Beitrag vom 21. Apr 2006
Antwort Antwort
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, 18: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
emteg

Registriert seit: 16. Jun 2005
71 Beiträge
 
Delphi 2009 Architect
 
#2

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 18:53
Unsichtbar!
Wie wärs mit einem typen, der den zu schreibenen text speichert, die zeile, in der er ausgegeben wird/werden soll und was du sonst noch so brauchst. Dann machst du dir ein dynamisches array von diesem type. In deinem timer event machst du ne schleife durch den array und machst für jeden eintrag normal weiter.

Ich hoffe mal, dass ich dich richtig verstanden habe

Edit: Der type könnte dann ungefähr so aussehen:

type TMatrixZeile=record
FullText: string;
Line: integer;
Progress: integer;
Done: boolean;
end;

var MatrixZeilen: array of TMatrixZeile;


[Ich hab dich falsch verstanden - ich dachte du wolltest wissen, wie man mehrere zeilen gleichzeitig so ausgeben kann]
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 20:42
Oder du schreibst den Text in schwarz hin und lässt ihn mit nem extra timer schritt für schritt clLime werden
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#4

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 20:47
Inherited hat vollkommen recht, einfach alles von Unsichtbar zu clLime oder so überlaufen lassen, dabei können die Hex-Farben und RGB-Farben helfen ($FARBCODE, RGB(0,0,0)).
  Mit Zitat antworten Zitat
Kill0r

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

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 21:39
Hmmm... Ich kann euch nicht ganz folgen.
Ich sehe den Sinn nicht was das bringen soll
Könnt ihr mir das vielleicht ein bisschen näher erläutern?

Cu
Kill0r
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 22:04
Ich denke sie wollen damit sagen dass du praktisch die Buchstaben 'in'faden lassen sollst. Also sie sind schon da (unsichtbar) und werden dann sichtbar Buchstabe fuer Buchstabe!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 22:07
Zitat von Mackhack:
Ich denke sie wollen damit sagen dass du praktisch die Buchstaben 'in'faden lassen sollst. Also sie sind schon da (unsichtbar) und werden dann sichtbar Buchstabe fuer Buchstabe!
Exakt. Das hat u.a. den Vorteil, dass du sie nicht kompliziert zwischenspeichern musst!
  Mit Zitat antworten Zitat
Kill0r

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

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 22:11
Ja, soweit verstehe ich das schon
Aber ich sehe nicht den Sinn darin weil ja das Problem ja immer noch besteht oder?
Ich habe da einfach einen Knopf in meiner Logik
Naja ich habe gerade eine Idee und versuch sie auszuarbeiten mal gucken ob es klappt
Könnt ruhig weiter Vorschläge oder Ideen posten, freue mich für jede Antwort

Cu
Kill0r
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 19. Apr 2006, 22:35
Kannst ja einfach ein schwarzes Edit-Feld über die unterste Zeile legen...
  Mit Zitat antworten Zitat
Kill0r

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

Re: Eigene Konsole: Problem bei der Eingabe

  Alt 21. Apr 2006, 16:07
Hmm... nee, da ist mir eine elegantere Lösung lieber, auch wenn sie schlussendlich komplizierter ist
Naja egal, ich hab jedenfalls selber eine Lösung ausgearbeitet und sie scheint zu funktionieren
Trotzdem vielen Dank für eure Hilfe

Cu
Kill0r
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
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