Array in DB suchen

Limette

Level-2
Beiträge
282
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich würde gern ein array in einem DB suchen.
habe mich ein wenig versucht, klappt aber überhaupt nicht.
Wäre es noch wichtig zu wissen wie der DB aufgebaut ist, also wie groß, Struktur. etc?
Über hilfe würde ich mich sehr freuen.

Code:
FUNCTION FC1 : VOID
VAR_INPUT
    ToCheckArray: ARRAY[1..32] OF BYTE;
    ToSearchDB: BLOCK_DB;
END_VAR
VAR_OUTPUT
    Found : BOOL;
END_VAR
BEGIN
     IF  ToSearchDB == ToCheckArray    
    Found := True;
ELSE
    Found := false;
END_IF;
     
    
END_FUNCTION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
als strukturelement oder ob die werte stimmen?
wenn a) dann vergiss es
im der steuerung ist der batenbaustein nur ein haufen bytes ohne strukturelemente, ohne bezeichnung, ohne index ... allein die adresse macht einen zugriff mgl.

b!..ob die werte übereinstimmen, würde ich gerne wissen.
 
Dann frage ich mich, ob Du meinen Codeschnipsel nicht verstanden hast, oder ich die Aufgabenstellung.

In der Schleife wird der Arraybereich von 1 - 32 mit einem Wert verglichen und das Bit Found gesetzt, falls der Vergleich positiv war.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann frage ich mich, ob Du meinen Codeschnipsel nicht verstanden hast, oder ich die Aufgabenstellung.

In der Schleife wird der Arraybereich von 1 - 32 mit einem Wert verglichen und das Bit Found gesetzt, falls der Vergleich positiv war.

ich habe es so verstanden dass du unr einzelene bytes aus dem array verlgeichen willst. ich meinte das array als ganzes. kann natürlich auch sein dass ich dein codeschnipsel nicht verstehe.

Frage:
Bei
Code:
If  ToSearchDB.array = ToCheckArray then usw...

Bringt es als Übersetzungsfehler "unzulässige Operantentypen" und setzt den Cursor hinter das ToCheckArray. Wie müsste das lauten ?
 
Dann frage ich mich, ob Du meinen Codeschnipsel nicht verstanden hast, oder ich die Aufgabenstellung.

In der Schleife wird der Arraybereich von 1 - 32 mit einem Wert verglichen und das Bit Found gesetzt, falls der Vergleich positiv war.

Limette brauch heut wieder bißchen länger ... ich sehe deine lösung auch als die eigentliche des problems
evtl. ist es notwendig den zu durchsuchenden bereich auf die gesamte struktur des DBs auszudehnen (das am besten in AWL) aber man wird nie die eindeutige zuordnung des arrays bekommen, wenn man nicht die struktur im programm hinterlegt.
 
Hallo,
ich fasse das jetzt mal zusammen :
Aus der Anfrage heraus habe ich es (auch) so verstanden : Ich möchte ermitteln ob und wenn ja wo in einem DB ein bestimmtest Array (namentlich) vorhanden ist.
Das geht nicht, weil :
... in der steuerung ist der datenbaustein nur ein haufen bytes ohne strukturelemente, ohne bezeichnung, ohne index ... allein die adresse macht einen zugriff mgl.

Falls es aber darum gehen sollte, ein bestimmte Byte-Wert-Sequenz zu finden, so ginge das in einer 2D-Schleife, die aber je nach Größe des DB u.U. eine ganz schöne Bearbeitungszeit haben wird.

Deswegen von mir aus noch einmal die Frage : Was soll es denn (so ganz wirklich) werden ?
Es gibt immer (meißtens) einen Weg etwas zu machen - manchmal ist aber der erste Ansatz noch nicht so ganz der Richtige ... ;)

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Limette brauch heut wieder bißchen länger ... ich sehe deine lösung auch als die eigentliche des problems
evtl. ist es notwendig den zu durchsuchenden bereich auf die gesamte struktur des DBs auszudehnen (das am besten in AWL) aber man wird nie die eindeutige zuordnung des arrays bekommen, wenn man nicht die struktur im programm hinterlegt.

So. Ich habe den zu durchsuchenden DB ein Array of Struck verpasst.
Array 30 byte
Platzsperre 6 byte
Array 30 byte
Platzsperre 6 byte
Array 30 byte
Platzsperre 6 byte
etc. bis z.b. 300 byte erreicht sind.

Habe ich dich damit richtig verstanden ?
jetzt könnte man doch array mit array eins um das andere abgleichen ob eines davon passt, oder nicht ?
 
Hallo,
ich fasse das jetzt mal zusammen :
Aus der Anfrage heraus habe ich es (auch) so verstanden : Ich möchte ermitteln ob und wenn ja wo in einem DB ein bestimmtest Array (namentlich) vorhanden ist.
Das geht nicht, weil :


Falls es aber darum gehen sollte, ein bestimmte Byte-Wert-Sequenz zu finden, so ginge das in einer 2D-Schleife, die aber je nach Größe des DB u.U. eine ganz schöne Bearbeitungszeit haben wird.

Deswegen von mir aus noch einmal die Frage : Was soll es denn (so ganz wirklich) werden ?
Es gibt immer (meißtens) einen Weg etwas zu machen - manchmal ist aber der erste Ansatz noch nicht so ganz der Richtige ... ;)

Gruß
Larry


Das es lange dauert würde jetzt mal nichts machen, irgendwie muss man es ja durchsuchen.... es ist schon eine bestimmte Byte-Wert Sequenz.
 
Zurück
Oben