Faszinierend!
Zum LL-Bsp.:
Mit dem manuellen verändern des Modus laufen statt der if-zweige jeweils die else-zweige und demonstrieren, dass Anweisungen wie FirstElement nicht nur auf das element in der liste setzen, sondern als 'zubrot' den zeiger dazu liefern, den kann man dieser speziellen prozedur - die ja einen zeiger erwartet, auch gleich direkt übergeben ?!
Ist der offset 8 bei allen strukturen so oder muss der bestimmt werden (hab aus meinem vielen lesen und bsp ansehen noch so die funktion 'sizeof' im kopf)?
Weder das array noch die linkedlist sind dann aber dafür geeignet, in einer prozedur neue elemente hinzuzufügen (im sinne von dynamisch, da die zahl hinzukommender noch nicht klar ist und somit eine vordimensionierung eines arrays etwas übel wäre). Oder kann man in pb ein array dynamisch REDIMensionieren? Da hab ich nix gefunden. Ich will eigentlich einfach nur eine prozedur schreiben, die eine übergebene liste von strings um strings ergänzt. es sollen halt auch verschiedene listen übergeben werden und der speicherbedarf kann sehr hoch werden. Ich probiers nun mal mit einem string, in den ich das ganze hintereinander mit token getrennt packe, hoffe, dass ich da auf kein size-limit stoße (oder doch 64KB?). Das ganze kostet bei vielen einzeldaten natürlich leider zeit. Genauso wäre es zeitaufwendig, wenn man das prozedurergebnis als linkedlist oder array mittels schrittweisem durchkrabbeln einer bestehenden liste/array hinzufügen würde.
Fällt dir/euch da was besseres ein?
Viele grüße,
Lutz
Übergabe von Strings per Pointer an Proceduren
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Ich programmiere dir mal eine kleine LinkedList. Wenn ich eine TreeLinkedList schaffe, schaffe ich auch sowas einfaches.
///Edit:
Hier ist nun das Ergebnis. Ich habe das ganze bei Codes, Tipps & tricks ausgestellt.
Wenn du noch was bestimmtes brauchst. Ich progge es gerne dazu.
///Edit:
Hier ist nun das Ergebnis. Ich habe das ganze bei Codes, Tipps & tricks ausgestellt.
Wenn du noch was bestimmtes brauchst. Ich progge es gerne dazu.
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Achja, das hatte ich vergessen. Im Grunde solltest bei dir aber nur folgendes Fehlen:
- [c]AllocateMemory()[/c] hat falsche Parameter. Ersetze die Funktion mit [c]GlobalAlloc_()[/c].
Code: Alles auswählen
AllocateMemory(Size.l) GlobalAlloc_(#GMEM_FIXED, Size.l) - [c]FreeMemory()[/c] muss jetzt auch ausgetauscht werden. Ersetze die Funktion mit [c]GlobalFree_()[/c].
Code: Alles auswählen
FreeMemory(*Mem) GlobalFree_(*Mem) - Es fehlen sicherlich zwei Strukturen. Die findest du hier
Code: Alles auswählen
Structure BYTE b.b EndStructure Structure LONG l.l EndStructure