Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memo komponente Buchtaben auslesen,warten,weiterauslesen (https://www.delphipraxis.net/36382-memo-komponente-buchtaben-auslesen-warten-weiterauslesen.html)

Jab 19. Dez 2004 12:43


Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Hallo ich habe folgendes Problem :wall: :wall:

Ich möchte jeden einzelnen Buchstaben aus einer Memo-Komponente auslesen, also z.B.

(im Memo steht): sadfdsfa

dann (in der selben Dialogbox) unten in ein Säulendiagramm jeweils für s:20% einfügen, dann eine Sekunde warten (säulendiagramm wieder auf 0% setzen,nächsten Buchstaben auslesen), dann für a:10% einfügen (säulendiagramm wieder auf 0% setzen,nächsten Buchstaben auslesen), warten, dann für d:30% einfügen (säulendiagramm wieder auf 0% setzen,nächsten Buchstaben auslesen), ...warten, usw...


Das Problem ist nun, wie schaffe ich es das Delphi einen Buchstaben ausliest, dann z.B. "Gauge1.Progress := (Gauge1.Progress + 20);" macht und erst nach einer Sekunde weiterarbeitet...
Auch soll delphi das automatisieren also z.B. IMMER für s:20% eingeben...

Ich hoffe ihr versteht das was ich da geschrieben hab...
Vielen Dank im voraus...

malo 19. Dez 2004 12:44

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
wenn du willst, dass immer eine Sekunde Pause gemacht wird, dann könntest du einen Timer nehmen ;)

Aenogym 19. Dez 2004 12:45

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
hi,

in der hilfe steht alles schön erklärt.

zum auslesen: Delphi-Referenz durchsuchenTMemo.lines.text, Delphi-Referenz durchsuchenpos, Delphi-Referenz durchsuchencopy
und zum sekundenweise abarbeiten empfehe ich dir DelayDelay

Aenogym

Jab 19. Dez 2004 12:46

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
das war flott...
Ja das ist aber nicht mein Hauptproblem...

Eher das auslesen

Jab 19. Dez 2004 12:47

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Okay noch ma kurz...
Kann mir das keiner in einfachen Worten (oder Codesnippets) sagen, wie ich einzelne Buchstaben nacheinander aus ner Memo auslesen kann und bei jedem Buchstaben was angezeigt bekomme?

UND JA
Ich hab die Forumsuchfunktion schon benutzt
UND JA
Ich hab mein Englisches Handbusch schon gelesen

Beides ohne nennnenswerten ERfolg

Aenogym 19. Dez 2004 13:17

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
hi,

hm aus dem kopf würd ich jetzt mal sagen:

Delphi-Quellcode:
var currentChar: string;
    position: integer;
begin
  position := 1; //zum anfang setzem

  //solange tun, bis position das ende erreicht hat
  while position <= length(memo1.lines.text) do
  begin
    //aktuellen buchstaben einlesen
    currentchar := copy(memo1.lines.text, position, 1);

    //diesen buchstaben in eine listbox einfügen
    //(du kannst den buchstaben auch anders weiterverarbeiten - zB mit dem gauge
    listbox1.items.add(currentchar);

    //position erhöhen
    position := position+1;

    //eine sekunde warten (achtung! delay gehört nicht zu delphi. s.u.)
    delay(1000);
  end;
end;
ja, delay gibts nicht direkt in delphi. deswegen einfach mal hier in der codelibrary schauen: delaydelay.

Aenogym

fkerber 19. Dez 2004 13:20

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Hi!

Also ich würde das mal so machen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=1 to length(memo1.Text) do
 begin
  showmessage(Memo1.Lines.Text[i]);
 end;
end;
So hast du jeden einzelnen Buchstaben.


Ciao Frederic

SirThornberry 19. Dez 2004 13:21

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
es empfiehlt sich das "memo1.lines.text" in eine zwischen variable zu speichern da dies ein property ist und sonst bei jedem zugriff neu erzeugt wird. Also so machen
Delphi-Quellcode:
var LStr: String;
    LCount: Integer;
    LBuchstabe: Char;
begin
  LStr := Memo1.Lines.Text;
  for LCount := 1 to length(LStr) do
  begin
    LBuchstabe := LStr[LCount];
    //und jetzt kannst du mit LBuchstabe weiterarbeiten..
  end;
end
noch besser wäre jede Zeile extra zu verarbeiten damit im Speicher nicht ein solanger String am Stück ist.
Delphi-Quellcode:
var LZeile: String;
    LCountLines, LCountZeile: Integer;
    LBuchstabe: Char;
begin
  for LCountLines := 0 to Memo1.Lines.count - 1 do
  begin
    LZeile := Memo1.Lines.Strings[LCountLines];
    for LCountZeile := 1 to length(LZeile) do
    begin
      LBuchstabe := LZeile[LCountZeile];
      //jetzt mit LBuchstabe weiterarbeiten wobei auch direct mit "LZeile[LCountZeile]" gearbeitet werden (wäre sogar performanter)
    end;
  end;
end;

Jab 19. Dez 2004 13:24

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Jo das läuft nur soll Delphi bei jedem Buchstaben was anderes machen.

Also z.B.
Bei s + 10
Bei t + 20

Und nun soll der die memo Komponente nacheinander abarbeiten also erst den Buchstaben prüfen, anzeigen, nächsten Buchstaben prüfen

Also irgendwas mit If...Then

zum warten nehm ich immer sleep(1000) ;)

fkerber 19. Dez 2004 13:25

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Hi!

Delphi-Referenz durchsuchencase of


Ciao Frederic

Aenogym 19. Dez 2004 13:42

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Zitat:

Zitat von Jab
zum warten nehm ich immer sleep(1000) ;)

nimm lieber delaydelay. bei sleep friert die gesamte anwendung ein. und wenn du einen text mit 100 zeichen hast, friert die anwendung 100 sekunden lang ein und erst danach siehst du bei deinem gauge die position, die zum letzten zeichen gehört.

wenn du delay(1000); nimmst, wartet dein programm auch eine sekunde, allerdings siehst du sofort, was passiert.

und wenn dein programm immer was anderes amchen soll, nimm if abfrage àlà:

Delphi-Quellcode:
if buchstabe='a' then
  gauge1.progress := 10;
Aenogym

Jab 19. Dez 2004 13:45

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Cooooool, läuft

Danke an alle die mir geholfen haben.....
Es lag am dämlichen Sleep

Das mit der If schleife...
Ich hatte ausversehen sleep(10000);
drinne und mich gewundert wieso das Diagamm nicht gemacht hat was es sollte :)

Nochmal danke an alle
cya

fkerber 19. Dez 2004 14:03

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Hi!

Also:
a) wenn es eine Auswahl wie bei 26 Buchstaben gibt, dann bietet sich Case an
b) es gibt keine if-schleifen


Ciao Frederic

Luckie 19. Dez 2004 14:05

Re: Memo komponente Buchtaben auslesen,warten,weiterauslesen
 
Du musst erstmal in einer Schleife alle Buchstaben durchgehen und für den Buchstaben die Häufigkeit ermitteln, dann kannst du im zweiten Durchgang die Häufigkeit anzeigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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