Einzelnen Beitrag anzeigen

wolfram

Registriert seit: 11. Jul 2004
5 Beiträge
 
#1

If Abfragen für verschiedene CheckBoxen optimieren

  Alt 19. Jul 2004, 09:21
Hallo,
In einem anderen Thread habe ich bereits gefragt, wie ich die for-Schleife meines Dublettenprüfprogramms optimieren kann.
(Thread)
Das Programm soll jetzt so erweitert werden, dass man auf der Oberfläche über Checkboxen die zu vergleichenden Felder auswaehlen kann (Name, Str,Ort, etc).

Der Aufbau sieht derzeit so aus, dass die Dubleteten in einer Funktion nach der Levenshtein Distance verglichen werden (function ZmergeStrings). Umstaendlich erscheint mir aber, dass ich bei jedem Vergleich den Status der Checkboxen erneut abfrage. Welches ist die beste Methode diese unnoetigen Abfragen zu ersetzten?
Gruß Wolfram

Ps: Gibt es eine Rekursive möglichkeit, die beiden for-schleifen zu ersetzen?

Delphi-Quellcode:
procedure Vergleiche(zfactorT: integer);
var x,y,t: integer;
    tmp: boolean;
begin

 for x := 1 to SizeOfTable-1 do
 begin

   for y := x+1 to SizeOfTable do
   begin
       t := 0;
       if (checkname1.Checked = true) then
        t := t + ZmergeStrings(lowercase(ZFinalArray[x].ZBP_name1),
                           lowercase(ZFinalArray[y].ZBP_name1),ord(checkmax.checked));
       if (checkname2.Checked = true) then
        t := t + ZmergeStrings(lowercase(ZFinalArray[x].ZBP_name2),
                           lowercase(ZFinalArray[y].ZBP_name2),ord(checkmax.checked));
       if (checkstreet.Checked = true) then
        t := t + ZmergeStrings(lowercase(ZFinalArray[x].ZBP_street),
                           lowercase(ZFinalArray[y].ZBP_street),ord(checkmax.checked));
       if (checkpostcode.Checked = true) then
        t := t + ZmergeStrings(lowercase(ZFinalArray[x].ZBP_postcode),
                           lowercase(ZFinalArray[y].ZBP_postcode),ord(checkmax.checked));
       if (checkcity.Checked = true) then
        t := t + ZmergeStrings(lowercase(ZFinalArray[x].ZBP_city1),
                           lowercase(ZFinalArray[y].ZBP_city1),ord(checkmax.checked));
       if (checkemail.Checked = true) then
        t := t + ZmergeStrings(lowercase(ZFinalArray[x].ZBP_email),
                           lowercase(ZFinalArray[y].ZBP_email),ord(checkmax.checked));

       if ((t <= zfactorT) and
       ...
       then
       begin
         ZFinalArray[y].ZBP_dublette := true;
         ...
...
  Mit Zitat antworten Zitat