Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Suchalgorithmus (https://www.delphipraxis.net/7214-suchalgorithmus.html)

Piro 5. Aug 2003 20:44


Suchalgorithmus
 
Hallo ich habe ein Problem mit meinem Suchalgorithmus, der lautet:

Delphi-Quellcode:
procedure TForm1.FindDialog1Find(Sender: TObject);
var
 x,i: Integer;
begin
 for i:=adressbuch.Row to adressbuch.RowCount -1 do
 begin
     for x:=0 to 16 do
     begin
         if adressbuch.cells[x,i] = FindDialog1.FindText then
         begin
             adressbuch.Row := i;
             Inc(x); hier kommt der Fehler//[Error] form.pas(920): Assignment to FOR-Loop variable 'x'
             exit;
         end;
     end;
 end;
End;
Kann mir mal einer erzählen warum das nicht geht? Denn ich muss eine Spalte weiter gehen sonst sucht er nicht weiter.

Danke

sakura 5. Aug 2003 21:17

Re: Suchalgorithmus
 
Eigentlich recht einfach. Du darfst Schleifenzählervariablen innerhalb der Schleife nicht manipulieren. ;-) Das ist eine der Einschränkungen des Sprache.

...:cat:...

Luckie 6. Aug 2003 03:14

Re: Suchalgorithmus
 
Du zählst x doch schon mit der for-Anweisung hoch. Warum willst du das noch mal innerhalb der Schleife machen?

Piro 6. Aug 2003 06:38

Re: Suchalgorithmus
 
Tja da kann man nichts machen. Warum ich das machen möchte, ist ganz einfach.

Ich durchsuche ein StrinGrid und ich möchte beim erstem Suchtreffer danach auch weiterzsuchen können.

Wenn er nicht eins weiter zählt, bleibt er auf der Zelle stehen und man kann nicht weitersuchen. Das ist alles.

Vielleicht kann mir ja einer mal sagen wie ich das realisieren könnte.
Code:
Basis: 1. einen Suchtext suchen
       2. wenn ein Treffer da ist wird die Zeile selektiert
       3. bei erneutem Klicken auf den Weitersuchen Button soll er weitersuchen bis zum Ende
Ziel: ich muss irgendwie eine Zelle weiter rücken in der inner for-Schleife dann würde es gehen, aber ich weiß halt nicht wie, wenn das Inkremtieren nicht geht.

Jetzt seit ihr wieder dran. Danke

Mario 6. Aug 2003 07:19

Re: Suchalgorithmus
 
Niemand zwingt Dich, for zu nutzen. Nimm statt dessen doch eine While-Schleife, wo Du x manuell hoch zählst. Da darfst Du x beeinflußen.

Tpercon 6. Aug 2003 08:12

Re: Suchalgorithmus
 
Hier mal die Umsetzung als while Schleife (nicht getestet).
Delphi-Quellcode:
x := 0;
while x <= 16 do begin
  if adressbuch.cells[x,i] = FindDialog1.FindText then begin
    adressbuch.Row := i;
    inc(x);
  end;
  inc(x);
end;
Gruß

Piro 6. Aug 2003 08:25

Re: Suchalgorithmus
 
Danke

auf die einfachsten Sachen kommt man nicht. Tunnelblick.

Schönen Tag noch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr.

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