Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string durchsuchen und tipps zu while + for-schleifen (https://www.delphipraxis.net/141239-string-durchsuchen-und-tipps-zu-while-schleifen.html)

Der.Kaktus 5. Okt 2009 19:30

Re: [GELÖST] string durchsuchen
 
Zitat:

Zitat von DeddyH
Oh Mann, dabei hatte ich das beim ersten Mal sogar bemerkt :wall:

tut das net weh? :duck:

delphi-n 5. Okt 2009 19:32

Re: [GELÖST] string durchsuchen
 
also so?

Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
var i:integer;
begin
  for i := 0 to RichEdit1.Lines.Count - 1 do
    begin
     

      Button5.Caption := RichEdit1.Lines[i];
      Application.ProcessMessages;
      if Pos('schritt', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
         begin
        Button1.Click ;
          Application.ProcessMessages;
        sleep(200);
        end;
       if Pos('linksdrehen', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
              begin
        Button3.Click;
         Application.ProcessMessages;
         sleep(200);
         end;
       if Pos('rechtsdrehen', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
           begin
        Button4.Click;
           Application.ProcessMessages;
         sleep(200);
         end;
    end;
end;

DeddyH 5. Okt 2009 19:35

Re: [GELÖST] string durchsuchen
 
OK, dann auf Nummer Sicher:
Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
var i:integer;

  function StringEnthalten(const SubStr, Str: string): Boolean;
  begin
    Result := Pos(AnsiLowerCase(SubStr), AnsiLowerCase(Str)) > 0;
  end;

begin
  for i := 0 to RichEdit1.Lines.Count - 1 do
    begin    
      Button5.Caption := RichEdit1.Lines[i];
      Application.ProcessMessages;
      if StringEnthalten('schritt',RichEdit1.Lines[i]) then
        Button1.Click
      else if StringEnthalten('Linksdrehen', RichEdit1.Lines[i]) then
        Button3.Click
      else if StringEnthalten('Rechtsdrehen', RichEdit1.Lines[i]) then
        Button4.Click;
      sleep(600); //auf jeden Fall Zeit zum Gucken geben
    end;
end;
[edit] StringEnthalten muss natürlich eine Funktion sein :angel2: [/edit]

Der.Kaktus 5. Okt 2009 19:36

Re: [GELÖST] string durchsuchen
 
Na das iss doch was :thumb:

delphi-n 5. Okt 2009 19:43

Re: [GELÖST] string durchsuchen
 
so herum klappts:

Delphi-Quellcode:
  function StringEnthalten(const SubStr, Str: string): Boolean;
  begin
    Result := Pos(AnsiLowerCase(SubStr), AnsiLowerCase(Str)) > 0;
  end;

procedure TForm2.Button5Click(Sender: TObject);
var i:integer;
begin





  for i := 0 to RichEdit1.Lines.Count - 1 do
    begin

      Button5.Caption := RichEdit1.Lines[i];
      Application.ProcessMessages;
      if StringEnthalten('schritt',RichEdit1.Lines[i]) then
        Button1.Click
      else if StringEnthalten('linksdrehen', RichEdit1.Lines[i]) then
        Button3.Click
      else if StringEnthalten('rechtsdrehen', RichEdit1.Lines[i]) then
        Button4.Click
      else if StringEnthalten('umdrehen', RichEdit1.Lines[i]) then
         begin
        Button4.Click;
        Button4.Click;
        end;

    sleep(200);

    end;
end;

DeddyH 5. Okt 2009 19:46

Re: [GELÖST] string durchsuchen
 
Was meinst Du mit "so herum"?

Matze 5. Okt 2009 19:49

Re: [GELÖST] string durchsuchen
 
Die Funktion müsste auch "andersrum" also im Deklarationsteil der Funktion Prozedur funktionieren.
Und nun musst du die Strings nicht mehr alle klein schreiben. Es schadet natürlich auch nicht, aber Deddy hat die Funktion so umgeschrieben, dass beide Parameter "verkleinert" werden.

Welcher Fehler kam denn bzw. was ging nicht?

delphi-n 5. Okt 2009 20:05

Re: [GELÖST] string durchsuchen
 
Zitat:

Welcher Fehler kam denn bzw. was ging nicht?
ups, ich hatte es nicht in den Deklarationsteil geschrieben. sry, mein Fehler. :wall:



----

aber wie mache ich das, wenn ich wie bei "while" eine "solange"-schleife einbauen will?



Also wenn er "solange" findet (soll so ne art mini-programmier-sprache werden: solange xxx tue ...*solange),
soll er prüfen, ob das was dahinter steht wahr ist (klar) und dann weiter machen und wieder zurückspringen (alles soweit klar).

wenn aber es nicht wahr ist, muss er ja zum nächsten *solange gehen, ohne die for schleife neu zu beginnen, da das darin dann ja nicht ausgeführt werden soll.

Ich dachte erst daran, das "i:=i+1;" hinter die solange-abfrage zu setzten und zu suchen, also den
"else if StringEnthalten('xxx', RichEdit1.Lines[i]) then xxx"-Block nicht zu verlassen.

Aber i:=i+1; geht bei for ja nicht...

DeddyH 5. Okt 2009 20:07

Re: [GELÖST] string durchsuchen
 
Wenn ich Dich richtig verstanden habe, meinst Du Delphi-Referenz durchsuchencontinue.

delphi-n 5. Okt 2009 20:16

Re: [GELÖST] string durchsuchen
 
wo sollte ich das hinsetzen?

P.S.: Eig. könnte ich aus der for-schleife auch wieder eine While-Schleife machen, dann gings


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.
Seite 4 von 6   « Erste     234 56      

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