Zuweisung von Adressen

buenne

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe einen Globalen DB. Im DB ist ein Array abgelegt.
Wie kann ich in den einzelnen Feldern des Arrays jetzt
auf die Adressen eines anderen DB verweisen ?
 
habe absolut keine ahnung was man damit machen soll, aber gut...

du kannst eventuell einen pointer in form eines dword ablegen.

woher bekommst du die adressen? willst du die fest eingeben oder werden die über eine visu eingegeben oder werden die zur laufzeit dynamsch ermittelt... ???!
 
Gehts denn nicht mit ANY-Pointern ?
Oder wenn es sich nur um einen DB handelt müßte es auch mit einer DWORD-Adresse getan sein.

Was es definitiv nicht in STEP7 gibt ist ein Adressoperator, der dir einen typisierten Zeiger auf ne Variable zurückgibt.

hth
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In die Felder müsste schon eine Datenstruktur. DB100. DBW4.0 benötigt mehr als 32 Bit, also mehr als ein DW.

Muss man das so kompliziert lösen? Was soll der Sinn sein?
 
Die Adressen stehen fest im DB100.
Zur Laufzeit verändert sich lediglich der Inhalt der DWORD.

Ich brauche die Adressen des DB100 in dem Array um
verschiedene Beziehungen (Graphenstruktur) der einzelnen Adressen untereinander darstellen zu können.
 
Hallo,
ich muss zugeben, dass ich den Sinn der Übung auch nicht so ganz verstehe ...
Sollte es sich dabei um eine Art Daten-Konzentrierung handeln, damit eine Übetragungsstrecke nicht mit zuviel "S*" belastet wird, dann würde ich mir die Daten einfach alle mit "L" und "T" zusammen schieben. Also :
L DB100.dbw4
T DB101.Feld [1]
usw.

Gruß
 
Ja so ähnlich kann man das sehen.

Wie kann ich eine Adresse eines DB (DB100) fest
einem anderen DB101 (Array,Feld xy) zuordnen?

Ich brauche das um die Information eines Knoten
eines Graphen den oder die Vorgänger/Nachfolger
in einem Array abzulegen.
Der Graph hat mehere Knoten, die untereinander verbunden sind.
Mit einem Algorithmus(Tiefensuche) will ich den Graphen durchlaufen
um einen bestimmten Knoten zu finden.
In einem DB100 habe ich alle meine Knoten ablegt. Jeder Knoten hat Bitinformationen in DWORD.
In einem zweiten DB101 habe ich mehrer Arrays abgelegt. Jedes Array
spiegelt einen Knoten aus dem DB100 wieder, dh in jedem dieser Arrays stehen die Adressen für Vorgänger/Nachfolger.

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
kannst du das mal mit ein paar reellen werten hier posten was in welchem db steht bzw stehen sollte.
muss nicht der syntax entsprechen. ich kann mir irgendwie kein richtiges bild von der sache machen.

kurz vor ostern bin ich immer so schwer von begriff.
 
DB100: Bitweise Informationen über den Knoten
DB101: Informationen über den Vorgänger/Nachfolger in den Arrays, also Verweis auf die Adressen von DB100 in den einzelnen Feldern.


DATA_BLOCK KNOTEN
//
// Im DB100 werden alle Knotenpunkte mit seinen Informationen
// (32 Bit) in einem Array abgelegt.
//
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
BEGIN
END_DATABLOCK



DATA_BLOCK ADJAZEN
//
// Im DB 101(Adjazen) stehen in mehreren Arrays die Verbindungsinformationen zum Vorgänger
// und zum Nachfolger in Form von Adressen
//
STRUCT
Knoten_A: ARRAY[1..3] OF DWORD; //Im Feld 1 soll z.B. ein Verweis
Knoten_B: ARRAY[1..2] OF DWORD; //(Adresse) von z.B. Knoten_A
Knoten_C: ARRAY[1..2] OF DWORD; //aus DB100
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
BEGIN
END_DATABLOCK
 
Ja so ähnlich kann man das sehen.

Der Graph hat mehere Knoten, die untereinander verbunden sind.
Mit einem Algorithmus(Tiefensuche) will ich den Graphen durchlaufen
um einen bestimmten Knoten zu finden.

Um welche Art von Graphen handelt es sich, kann da jeder Knoten mit jedem und allen verbunden werden, oder liegt ein Baum vor?

Warum bildest du nicht die Knoten + Adresse in einem Typ ab und steckst es dann immer zusammen in einen DB?

Welche Anwendung steckt da eigentlich dahinter?
 
also irgendwie checke ich das nicht so ganz.

ok.im db100 stehen die infos über den knoten selbst.

annahme
dbd0-----dbd4----dbd12
knotA-----knotB-----knotD

im db101 stehen folgende infos im array.
Knoten_B[1] = vorgängerknoten (hier soll jetzt die adresse db100.dbd0 stehen ?)
Knoten_B[2] = dieser knoten (hier dbd4)
Knoten_B[3] = folgeknoten (hier dbd12)

stimmt das so?

und wieso ist das array für konten f..j nur 1 lang?
die solltest du alle auf die gleiche länge setzen damit du überhaupt brauchbar indirekt arbeiten kannst.

so im programm willst du nun die daten
die adressen im array im db101 kannst du nun auf zwei arten ablegen.
1. dezimal
wenn so dan musst du dir den pointer im prog immer wieder neu bauen
2. als pointer

z.b.
Code:
//zuweisung der adressen
      L     0 //adresse dezimal
      SLD   3
      T     DB101.DBD    12 //knoten_b[1] zeigt nun auf dbd0 (knoten_a)
 
      L     4 //adresse dezimal
      SLD   3
      T     DB101.DBD    16 //knoten_b[2] zeigt nun auf dbd4 (knoten_b)
 
      L     12 //adresse dezimal
      SLD   3
      T     DB101.DBD    20//knoten_b[3] zeigt nun auf dbd12 (knoten_d)
Code:
      AUF   DB    101
      L     DBD 12
      t     #vorknoten
      L     DBD 16
      t     #istknoten
      L     DBD 20
      t     #nachknoten
 
      AUF   DB    100
      L     DBD [#vorknoten] 
      L     DBD [#istknoten] //lädt also db100.dbd4
      L     DBD [#nachknoten]

und..... treffer ???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
JOOOOO!! So war das gemeint.

im db101 stehen folgende infos im array.
Knoten_B[1] = vorgängerknoten (hier soll jetzt die adresse db100.dbd0 stehen ?)
Knoten_B[2] = dieser knoten (hier dbd4)
Knoten_B[3] = folgeknoten (hier dbd12)


und wieso ist das array für konten f..j nur 1 lang?
die solltest du alle auf die gleiche länge setzen damit du überhaupt brauchbar indirekt arbeiten kannst.

Dieser Knoten hat halt nur einen Vorgänger/Nachfolger im Graphen/Baum.

Den Code den du geschrieben hast verstehe ich auch soweit.

Meine Frage: Kann ich eine Adresse aus DB100 fest/direkt in ein Feld
eines Arrays des DB101 schreiben.(Ohne Pointer!!)

Wenn das nicht geht, dann geht es halt nicht. Würde mir die Sache in SCL deutlich vereinfachen.

Danke Volker!!:)
 
der pointer ist doch die adresse.
wenn sich die adressen nie andern, kannst du auch den festen wert dort reinschreiben
DW#16#00000060 //ist der pointer auf dbd12

oder dezimal
Code:
      L     12 //adresse dezimal
      T     DB101.DBD    20//knoten_b[3] zeigt nun auf dbd12 (knoten_d)
------------------------------------------
      L     db100.DBD 12
      sld 3
      t     #nachknoten
 
      AUF   DB    100
      L     DBD [#nachknoten]
das halte ich aber für noch umständlicher

Danke Volker!!:smile:
Bitte benutzen im Beitrag diesen Button
post_thanks.gif
:ROFLMAO:
 
Zurück
Oben