Einzelnen Beitrag anzeigen

Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

verschachtelte for to do schleife

  Alt 13. Feb 2013, 20:10
Hallo zusammen,

ich möchte für ein Warenwirtschaftsprogramm beim Artikel anlegen vermeiden, dass ein und der selbe Hersteller mehrfach angelegt wird. Man gibt also den Hersteller in Form A ein, drückt enter und es öffnet sich Form B mit allen Ähnlichen Herstellern. -->
Knorr AG
Knorr GmbH
Knorr und lecker
Knorrirgendwas

Dann den richtigen Hersteller auswählen und chick.

Die Datenbank soll also durchsucht werden und dann geprüft werden ob dieser Hersteller bereits
in Form B steht, wenn ja dann nichts machen, wenn nein, dann auflisten.

Das Prüfen ist notwendig, damit nicht 70x Knorr steht, weil ich 70 Artikel von dieser Firma habe (in Grafik wie es nicht sein soll)

Hier der Quellcode mit dem Problem, dass die J Schleife nie durchlaufen wird. Ich verstehe nicht warum

Delphi-Quellcode:
begin
listview1.Clear;

                 Ini:=TIniFile.create(einstellungen.artikelreg);
                 //---------------------------------------------------- //Datenbankpfad zuweisen
                     db_ar_index:=ini.readstring('DB_AR', 'index', db_ar_index); // Anzahl Datenbankeinträge lesen
                     ean_hersteller_suche:=pflege.edit8.text; //herstellerfeld // Herstellerbezeichnung in aktuelle Form reinholen

                          for I := 0 to strtoint(db_ar_index)do // von 0 bis Ende der DB Einträge
                          begin
                            showmessage('beginne i schleife');
                            Ini:=TIniFile.create(einstellungen.artikelreg);
                            ean_hersteller_db:= ini.readstring(inttostr(I), 'hersteller', ean_hersteller_db); // Hersteller aus 1. Datensatz lesen


                                          ean_hersteller_suche:=uppercase(ean_hersteller_suche); // in Großbuchstaben umwandeln
                                          ean_hersteller_db_short:= copy(ean_hersteller_db,1,(length(ean_hersteller_suche)));
                                          ean_hersteller_db_short:=uppercase(ean_hersteller_db_short);

                                          if (Pos(ean_hersteller_suche,ean_hersteller_db_short)>0) // wenn Herstellereingabe von Benutzer mit Datenbankeintrag übereinstimmt
                                          then begin
                                               showmessage('i: suchwort enthalten');
                                               for J := 0 to listview1.items.Count - 1 do // --> listview durchsuchen ob Hersteller schonmal gelistet ist
                                                  begin
                                                      showmessage('beginne J schleife');

                                                      if (ListView1.Items.Item[J].Caption = ean_hersteller_db) // prüfen ob Hersteller schon einmal aufgeführt
                                                      then begin
                                                             exit; // Schleife verlassen
                                                           end
                                                      else begin
                                                              list:= listview1.Items.add; //Eintrag erzeugen
                                                              list.caption:=ean_hersteller_db;
                                                           end;
                                                  end;



                                               end;




                         end;// schleife I
Miniaturansicht angehängter Grafiken
delphi-err.jpg  
  Mit Zitat antworten Zitat