Adressen in DB's zuweisen(SCL)

buenne

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen!
Ich habe zwei Datenbausteine und möchte dem zweiten DB 101 in den einzelnen Feldern eine Adresse des ersten Datenbausteins ablegen.

Z.B Aus dem DB 100 soll die Adresse des Knoten_C im ersten Feld vom DB 101 Knoten_A stehen und im zweiten Feld die Adresse von DB 100 Knoten_A.
Wie schreibe ich die Zuweisung für die einzelnen Felder(Array) im DB 101?
Geht das überhaupt?

Erster Datenbaustein:

DATA_BLOCK DB100
STRUCT
Knoten_A: DWORD; //DB100 0.0
Knoten_B: DWORD; //DB100 4.0
Knoten_C: DWORD;
Knoten_D: DWORD;
Knoten_E: DWORD;
Knoten_F: DWORD;
Knoten_G: DWORD;
Knoten_H: DWORD;
Knoten_I: DWORD;
Knoten_J: DWORD;
END_STRUCT

Zweiter Datenbaustein:

DATA_BLOCK DB101
STRUCT
Knoten_A: ARRAY[1..3] OF DWORD;
Knoten_B: ARRAY[1..2] OF DWORD;
Knoten_C: ARRAY[1..2] OF DWORD;
Knoten_D: ARRAY[1..3] OF DWORD;
Knoten_E: ARRAY[1..3] OF DWORD;
Knoten_F: ARRAY[1..1] OF DWORD;
Knoten_G: ARRAY[1..1] OF DWORD;
Knoten_H: ARRAY[1..1] OF DWORD;
Knoten_I: ARRAY[1..1] OF DWORD;
Knoten_J: ARRAY[1..1] OF DWORD;
END_STRUCT

Danke für Eure HILFE
 
Hallo,
ich mache auch so etwas ähnliches. Dabei arbeite ich mit einem ANY-Pointer. Das geht so :

Zunächst legst du im TEMP-Bereich eine Struct an :
xAny : STRUCT
ID_Code : byte ;
DataTyp : byte ;
Anzahl : word ;
DB_Nr : word ;
SpeicherPtr : dowrd ;
END_SRUCT ;
hAny AT xAny : any ;

Nun kannst du dir den Pointer einer beliegen SCL-Variablen holen mit :
Var_Offset := DWORD_to_INT (xAny.SpeicherPtr and dw#16#00FF_FFFF) / 8 ;

Diese Variable kannst du in den anderen DB hereinschreiben und direkt als Offset wieder aufgreifen.
Das geht z.B. so :
DB100.DW[Offset + Verschiebung] := 12345 ;

... oder so ...

Ich hoffe, das hilft dir weiter ...
 
Zurück
Oben