Feldgrenzen (Diese..undDiese) als Wert in SCL ermitteln

IchBinsNur

Level-1
Beiträge
12
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich möchte die Feldgrenzen eines Array in SCL ermitteln um hier gezielt löschen zu können. Die Übergabeparameter meines FB sind leider fix, sodass ich intern die Struktur erkennen muss.
Beispiel:

Code:
TYPE 
     XYXY : STRUCT
     XXXX : DatX;   
[B]     YYYY : ARRAY [2000..2100] OF DatX; (*Dies ist Variabel !!!*) [/B]
   END_STRUCT
END_TYPE

DATA_BLOCK TESTDB
   STRUCT
      DATA : XYXY;
   END_STRUCT
BEGIN
END_DATA_BLOCK
Die DB-Nummer, DB-Länge etc. habe ich schon mittels Hilfspointer ermittelt.
siehe hier:
Code:
TempPtr := TESTDB.YYYY; (* Hilfsvariable auf Hilfs-Any-Pointer kopieren um so den aktuellen DB herauszubekommen *)
(* Info zum Any-Ptr *)
DUMMY_IDCode_DataTyp  := InternAny1.IDCode_DataTyp;
DUMMY_Anzahl          := InternAny1.Anzahl;
DUMMY_DB_Nr           := InternAny1.DB_Nr;
DUMMY_Speicherbereich := InternAny1.Speicherbereich;
DUMMY_Start_DW        := InternAny1.Start_DW;

DUMMY := TEST_DB(DB_NUMBER := InternAny1.DB_Nr, DB_LENGTH := LEN_in_Word, WRITE_PROT := Done); (* Länge des DB ermitteln *)
Mit LEN_in_Word kann ich jetzt mühsam berechnen wo das zu bearbeitende Feldelement(das bekomme ich übergeben) liegt. Geht zwar auch, aber ist doch nicht elegant, oder??
Ausserdem könnte ich schon vorher auf Gültigkeit des übergebenen Feldelementes checken!

Ich hoffe auf die Experten hier im Forum ;) Danke schonmal...
 
Hallo,
aus sich heraus kann SCL nur sinnvoll mit Elementen arbeiten, die es kennt (beim compilieren ist die Struktur bekannt).
Zu deinem Problem fällt mir nur ein :
Das externe ARRAY mittels ANY-Pointer übergeben. Auf diese Weise kannst du dann die Größe und den Datentyp übergeben ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jaja LL,

das mit dem "erst beim compilieren ist die Struktur bekannt" ist schon klar,
aber ich hatte halt die Hoffnung, zumindest die "2000" aus meinem Beispiel
irgendwo mit Programmmitteln einsehen zu können.
Leider sind die Parameter bereits fix. Der FB ist nur ein Update mit flexiblerer
Funktion, die dem Kunden leichtfertig versprochen wurde (nicht von mir
sondern von jemandem der sich nicht damit auskennt...:sw11:

Schade, aber Danke für das schnelle Statement :D
 
... wie wäre es denn mit einer Art Header zu deinem Daten-Baustein ?
Ich stelle es mir in etwa so vor, dass du ein "paar" Informationen zum Aufbau deiner Datenstruktur (die immer gleich schiffriert sind / sein müssen) vor deinem Daten-Array ablegst und via des ANY-Pointers mit liesst und dann dieses erst auswertest und dann "sinnvoll" auf die Daten zugreifst ...

Vielleicht ein Ansatz ...
 
Zurück
Oben