DB Array Intern auf doppelte Eingabe vergleichen

Vielhro

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
Habe eine Frage zu oben genannten Thema.
Ein Kunde möchte in einem "ARRAY [1 .. 60 ] OF INT" die Felder überprüfen um zu sehen ob ein Zahlenwert zb.: 22 mehrfach vorhanden ist (zur Info. die werte werden über ein TP177 an den DB Übertragen).

Nun habe ich mir einen FC erstellt welcher einen Wert mit einem der schon im DB vorhanden ist auf gleich auswertet.
Mein Problem ist jetzt das ich die abfrage "intern" auf mehrfach vorhanden nicht hinbekomme

Habe schon probiert über die Funktion eine weitere Schleife darüber zu legen und diese mit der Anzahl der zu überprüfenden Zahlenwerte (INT) ablaufen lasse. und dann den vergleich ausführe und wenn der vergleich wahr ist aus der Schleife springe.
Jedoch vergleicht er dann nur ob eine Zahl mit der übergelagerten schleifen Zahl stimmt, und nicht ob ein Eintrag mehrfach vorhanden ist.

(STEP7 V5.4 +SP4)

AWL Quelle als Anhang

Währe nett wenn mir da jemand helfen könnte.
 

Anhänge

  • FC10.zip
    1,5 KB · Aufrufe: 34
Zuletzt bearbeitet:
Hallo Vielhro,

ohne den Anhang zu sehen würde ich folgendes vorschlagen. Schau dir mal nen Baustein für Bubblesort (Suchfunktion!) an. Das kannste dann mit deiner Auswertung kombinieren. Oder 2 Schleifen und dann in nen neuen Bereich kopieren wenn der Eintrag noch nicht im neuen Bereich vorhanden ist. Schleife 1 über Quellbereich, Schleife 2 über Zielbereich

André
 
Zuletzt bearbeitet:
Check..

Hi,
er möchte doch auf "Mehrfachvorhanden" prüfen, so müsste man ein Index
bei einem Treffer hochzählen, wenn am Schluss der Index>1 -> ist der Wert mehrfach drin.

Gruss: V.
 
Hi,
er möchte doch auf "Mehrfachvorhanden" prüfen, so müsste man ein Index
bei einem Treffer hochzählen, wenn am Schluss der Index>1 -> ist der Wert mehrfach drin.

Gruss: V.

ich hab das bit gleicheWerte drin, das müßte reichen. anforderung war ja nicht, auszugeben was, wie oft doppelt ist... :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
er möchte doch auf "Mehrfachvorhanden" prüfen, so müsste man ein Index
bei einem Treffer hochzählen, wenn am Schluss der Index>1 -> ist der Wert mehrfach drin.

Gruss: V.

das macht der Code von 4l schon.

IMHO sollte die Schleife aber beim 1. doppelten Eintrag verlassen werden...
 
IMHO sollte die Schleife aber beim 1. doppelten Eintrag verlassen werden...

hatte in der ersten version ein RETURN drin, fand ich nicht so gelungen
dann hat ich ein GOTO drin ... da gehen die meinungen ja mittlerweile nicht mehr soweit auseinander ergo raus.
er könnte an der stelle ja noch einen zähler einbauen und erfassen, wieviele werte gleich sind evtl. sogar noch den wert rausschmeißen in ein array[0..59] (das die leute immer bei eins anfangen will mir nich in den schädel] of INT ...
 
ist schon klar, aber wenns nur um das "GleichBit" geht, dann macht die CPU u.U. >3000 unnötige Vergleiche.
Find ich nicht so toll.

Ist aber auch egal. Den Weg hast du aufgezeigt.
Darauf kommts ja an ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wahrscheinlich hat er kein SCL

Code:
*
      TAR1  #dAR1Save                   //AR1 retten
      TAR2  #dAR2Save                   //AR2 retten
      LAR1  P##arrayFeld                //start
      LAR2  P##arrayFeld                //festlegen
 
//WHILE i <= 60 DO
      L     60
whil: T     #i
 
//FOR k := 1 TO 60 DO
      L     60
for:  T     #k
//IF (arrayFeld[i] == arrayFeld[k] AND i <> k) THEN
      U(    
      L     W [AR1,P#0.0]
      L     W [AR2,P#0.0]
      ==I   
      )     
      U(    
      LAR1 
      TAK 
      LAR2  
      <>D   
      )     
//gleicheWerte := TRUE; GOTO end;
      =     #gleicherWert
      SPA   end
//end if
      +AR2  P#2.0
      L     #k
      LOOP  for
//end for
 
      +AR1  P#2.0
      LAR2  P##arrayFeld
      L     #i
      LOOP  whil
//end while
 
      LAR1  #dAR1Save
      LAR2  #dAR2Save
end:  NOP   0
 
Zuletzt bearbeitet:
Zurück
Oben