Funktionskopf bei linkedlist übergabe

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Funktionskopf bei linkedlist übergabe

Beitrag 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
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag 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.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag von double7 »

:cry: mein Projekt ist wohl soeben gestorben - kurz vor der Fertigstellung

trotzdem vielen Dank
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Sag was du genau brauchst (und warum). Eventuell gibts eine andere Möglichkeit.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag 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.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Mereep
Beiträge: 72
Registriert: 01.09.2004 18:55
Wohnort: Annaberg-Buchholz

Beitrag 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
Print("Hallo Welt")
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag 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...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag 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.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag 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.
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten