Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

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)

delphi-n 5. Okt 2009 18:26

Re: [GELÖST] string durchsuchen
 
danke, funktioniert perfekt :thumb:

[edit]:

in

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var S: string;
begin
  S := Edit1.Text;
if Pos('hallo', AnsiLowerString(S)) > 0 then
Button1.Visible:=false;
end;

MUSS der zu suchende text (hier hallo) KLEIN geschrieben werden, egal wie der Nutzer ihn dann schreibt, sonst klappt es nicht!

Ist mir beim Testen nur so aufgefallen

delphi-n 5. Okt 2009 18:42

Re: [GELÖST] string durchsuchen
 
jetzt hab ich

Delphi-Quellcode:
if Pos('schritt', AnsiLowerCase(S)) > 0 then
begin
 Button1.Click;
 i:=i+1;
 exit;
 end;
if Pos('hallo', AnsiLowerCase(S)) > 0 then
begin
 Button3.Click;
 i:=i+1;
 break;
 end;

was muss ich anstatt break oder exit einsetzten, dass der zurück zur while schleife geht (also nicht aussteigt)?

DeddyH 5. Okt 2009 18:48

Re: [GELÖST] string durchsuchen
 
Welche Schleife? Zeig mal mehr Code.

delphi-n 5. Okt 2009 18:51

Re: [GELÖST] string durchsuchen
 
Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
var i:integer;
s:string;
begin
i:=0;

while i<RichEdit1.Lines.Count do
begin
   sleep(100);
  S := RichEdit1.Lines[i];
  Button5.Caption:=S;

if Pos('schritt', AnsiLowerCase(S)) > 0 then
begin
 Button1.Click;
 i:=i+1;
 break;
 end;
if Pos('hallo', AnsiLowerCase(S)) > 0 then
begin
 Button3.Click;
 i:=i+1;
 break;
 end;




end;
end;
das erste macht er, beim zweiten hört er auf

DeddyH 5. Okt 2009 18:54

Re: [GELÖST] string durchsuchen
 
Dann lass die breaks doch einfach weg.

Der.Kaktus 5. Okt 2009 18:55

Re: [GELÖST] string durchsuchen
 
Zitat:

Zitat von delphi-n
Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
var i:integer;
s:string;
begin
i:=0;

while i<RichEdit1.Lines.Count do
begin
   sleep(100);//<<-----------------------------------------ersetze es mit Application.Processmessages....aber das brauchste nur, wenn sehr grosses Richedit ist ;-)
  S := RichEdit1.Lines[i];
  Button5.Caption:=S;// <<----was wird das?..zum Schnelllesen? ..musste aber Button5.Update evtl. einfuegen..sonst siehst Du nix!

if Pos('schritt', AnsiLowerCase(S)) > 0 then
begin
 Button1.Click;
 i:=i+1;
 break;
 end;
if Pos('hallo', AnsiLowerCase(S)) > 0 then
begin
 Button3.Click;
 i:=i+1;
 break;
 end;




end;
end;
das erste macht er, beim zweiten hört er auf


delphi-n 5. Okt 2009 19:01

Re: [GELÖST] string durchsuchen
 
der soll ja die nächste zeile vom richedit nehmen.

Matze 5. Okt 2009 19:06

Re: [GELÖST] string durchsuchen
 
Kurz was dazu:
Zitat:

Zitat von delphi-n
MUSS der zu suchende text (hier hallo) KLEIN geschrieben werden, egal wie der Nutzer ihn dann schreibt, sonst klappt es nicht!

Ist mir beim Testen nur so aufgefallen

Versuche immer den Code zu verstehen. Der String, mit dem verglichen wird, wird durch "AnsiLowerCase" klein geschrieben. Somit muss der Suchstring ebenfalls klein geschrieben werden.
Es ginge natürlich auch folgendes:

Delphi-Quellcode:
if Pos('HALLO', AnsiUpperCase(S)) > 0 then
Das nur als Hinweis: Also immer versuchen zu verstehen, was man in sein Programm übernimmt. ;)

DeddyH 5. Okt 2009 19:08

Re: [GELÖST] string durchsuchen
 
Macht er doch. Aber Du kannst das auch mit einer for-Schleife lösen.
Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
var i:integer;
begin
  for i := 0 to RichEdit1.Lines.Count - 1 do
    begin
      //die folgenden beiden Zeilen sind eigentlich sinnfrei,
      //weil das so schnell gehen dürfte, dass man nichts erkennen kann
      Button5.Caption := RichEdit1.Lines[i];
      Application.ProcessMessages;
      if Pos('schritt', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
        Button1.Click
      else if Pos('hallo', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
        Button3.Click;
    end;
end;

delphi-n 5. Okt 2009 19:18

Re: [GELÖST] string durchsuchen
 
Zitat:

Der String, mit dem verglichen wird, wird durch "AnsiLowerCase" klein geschrieben. Somit muss der Suchstring ebenfalls klein geschrieben werden.
danke, wieder was gelernt :thumb:


wenn ich das in das richedit schreibe:

Zitat:

schritt
Schritt
Linksdrehen
schritt
Rechtsdrehen
Schritt

mit dem Quellcode:

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
        Button1.Click ;
        sleep(200);
       if Pos('Linksdrehen', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
        Button3.Click;
         sleep(200);
       if Pos('Rechtsdrehen', AnsiLowerCase(RichEdit1.Lines[i])) > 0 then
        Button4.Click;
         sleep(200);
    end;
end;
erscheint alles auf dem button, aber dir buttons 3+4 werden nie gedrückt


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.
Seite 2 von 6     12 34     Letzte »    

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