Seite 1 von 2

Funktionskopf bei linkedlist übergabe

Verfasst: 26.09.2004 18:32
von double7
Moin moin,

ich hätte da mal ne frage.

Ich möchte eine linkedlist als Übergabeparameter an eine Funktion in
einer Dll verwenden.
Das Übergebende Programm, sowie die DLL sind in PB gecoded.

Kann mir jemand von euch mal einen kleinen Hint geben? Ich sitze
momentan ziemlich auf dem Schlauch.

Vielen Dank im Voraus,
d7

Verfasst: 26.09.2004 18:47
von Lars
Das geht so ohne weiteres gar nicht. Du könntest Pointer
entgegennehmen, aber das ist dann auch für den Benutzer der DLL nicht
so schön. PB unterstützt bisher keine Übergabe von LinkedLists oder
Arrays.

Verfasst: 26.09.2004 18:57
von double7
:cry: mein Projekt ist wohl soeben gestorben - kurz vor der Fertigstellung

trotzdem vielen Dank

Verfasst: 26.09.2004 19:03
von GPI
Sag was du genau brauchst (und warum). Eventuell gibts eine andere Möglichkeit.

Verfasst: 26.09.2004 19:05
von Lars
Wenn du nicht Elemente der LL anhängen oder welche entfernen musst,
dann ist das durchaus machbar, nur etwas aufwendig. Dafür schaust du
dir am besten mal an, wie LLs aufgebaut sind und arbeitest dann mit
Pointern, du musst dann alerdings die LLs selber handeln.

Verfasst: 26.09.2004 19:23
von Mereep
Warum soll das nicht gehen? Er kann doch einfach einfach die Startadresse des 1. Elements übergeben, und dann einfach alle weiteren Elemente suchen.
in jedem Element ist ja ein Zeiger auf das nächste und eins auf das vorige Element. Dürften die erste 8 Bytes der Struktur sein.
Welcher der beiden Werte nun der Zeiger aufs nächste/vorherige Element ist, weiß ich jetzt zwar nicht genau, aber ich schätze mal, das steht in der Hilfe.

Edit:
Du kannst auch noch Elemente einfügen und entfernen. Du musst dann eben einfach die 2 Zeiger jeweils auf das passende Element umbiegen.

GreeZ Mereep

Verfasst: 26.09.2004 19:49
von GPI
Einfügen und Löschen wird 100% nicht mit den letzten und ersten Element funktionieren, das PB für diese beiden Elemente interne Pointer hat, die man nicht ändern kann...

Verfasst: 26.09.2004 19:52
von Lars
Und außerdem weiß ich nicht, ob ein AllocateMemory() für die Elemente
reicht, bzw. ob DeleteElement() dann funktioniert.

Dass das benutzen sonst durchaus geht, habe ich so auch gesagt, Mereep.

Verfasst: 26.09.2004 23:46
von double7
in der linked list befindet sich eine structure für child fenster im mdi.
Daher ist es unbedingt notwendig, dass ich zugriff auf alle elemente habe.

Verfasst: 27.09.2004 00:11
von Danilo
Mach Dir doch einfach eine eigene LinkedList für diese
speziellen Anfoderungen, wenn Du es unbedingt jetzt
brauchst.

Also einfach eine Struktur mit NextNode und PrevNode
drin und 2 Prozeduren zum de-/allokieren.
Die 2 Prozeduren und die Struktur kannst Du dann in all
Deinen Codes verwenden wo Du willst - einfach den
Pointer an Prozeduren übergeben.