Step 7 SCL Vergleich ARRAY OF CHAR

tornado91

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Frage als SCL-Neuling:

Ich stehe vor folgendem Problem und habe über die Suchfunktion nichts gefunden:

Ich habe einen DB in dem ein Array of Char als Eingang Bereich definiert ist. Dieses Besteht aus 36 Zeichen.

Desweiteren habe ich im hinteren Bereich des DBs ein 2-Dimensionales Array (10 Plätze mit je 36 Zeichen) das mir als Historie dient.

Jetzt soll ich eine den Eingangsbereich überprüfen, ob der neue Code schon in der Historie vorhanden ist?!?!?

Irgendwie komme ich nicht darauf, wie ich das realisieren soll...

Könntet ihr mir da ein bisschen Hilfestellung geben??

Vielen Dank schon im Voraus!!

MFG tornado91
 
Verwende die FOR-Schleife die beim Durchlaufen die Array-Plätze miteinander vergleicht. Wenn bei einem Vergleich eine Abweichung findest brichst du die Schleife mit EXIT ab. Wenn die Schleife bis zum letzten Element ohne Abweichung durchläufst, setzt du einfach ein Bit, dass aussagt, dass der Code schon vorhanden ist. Das ganze machst du mit allen Bereichen des 2-Dimensionalen Arrays.

Code:
#Gleich := FALSE;


FOR #i := 0 TO 35 DO
    // Statement section FOR
    IF #Code[#i] <> #Historie_1[#i] THEN
        EXIT;
    ELSIF
        #Code[#i] = #Historie_1[#i] AND #i = 35 THEN
        #Gleich := TRUE;
    END_IF;
END_FOR;


FOR #i := 0 TO 35 DO
    // Statement section FOR
    IF #Code[#i] <> #Historie_2[#i] THEN
        EXIT;
    ELSIF
        #Code[#i] = #Historie_2[#i] AND #i = 35 THEN
        #Gleich := TRUE;
    END_IF;
END_FOR;

usw...

Das Bsp. dient nur als Denkanstoß und kann noch schöner gemacht werden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Schöner und effizienter:
Code:
#Gefunden := FALSE;

FOR #p := 0 TO 9 DO                             //Platz 1 bis 10
    FOR #i := 0 TO 35 DO                        //1. bis 36. Zeichen
        IF #Code[#i] <> #Historie[#p, #i] THEN
            EXIT;
        END_IF;

        IF #i = 35 THEN
            #Gefunden := TRUE;
        END_IF;
    END_FOR;

    IF #Gefunden THEN
        EXIT;
    END_IF;
END_FOR;

IF #Gefunden THEN
  // #p enthält die Platznummer, wo der gesuchte Code gefunden wurde
  ...
END_IF;

Harald
 
Zuletzt bearbeitet:
Zurück
Oben