LinkedLists in Proceduren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

LinkedLists in Proceduren

Beitrag von KeyKon »

Hallo, ich will eine Procedure schreiben die eine LinkedList bearbeitet. Ich weis aber nicht wie. Das Problem:
Ich muss irgendwie den Namen der LinkedList in die Procedure eingeben können z.B. so:

Code: Alles auswählen

Listumwandeler(TestList())
Das geht aber nicht weil befehle wie SelectElement() keine Variablen annehmen!
Also, geht das irgendwie?

KeyKon
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1767
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Aus der Anleitung zu NewList:
Verknüpfte Listen sind in PureBasic immer global. Dies bedeutet, dass auf sie auch aus Prozeduren heraus zugegriffen werden kann, ohne die Befehle Global oder Shared aufrufen zu müssen.
Du musst also den Namen der LinkedList nicht als Parameter übergeben. :)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Nein, ich hab gemeint dass man eine Bestimmte Procedure bearbeitet und zwar die, die man als Parameter angiebt also z.B. so (streng vereinfacht):

Code: Alles auswählen

global out.s
Procedure Out(LinkedListname.s,Ort.l)
SelectElement(LinkedListname,Ort)
out = LinkedListname
EndProcedure
Geht so etwas irgendwie???

KeyKon
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Nein, geht nich!
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Man muss sich dafür seine eigenen Listen bauen:

Schau mal auf PureArea, oder hier im Forum nach Linked Lists (o.ä.):

a) Da gibt es eine Lösung von NicTheQuick, welche wahrscheinlich mit die schnellste Lösung ist, da sie (soweit ich mich entsinne) für Longs und Floats alles seperat macht.
Gibt unter Memory-Handling im Codearchiv auf PureArea.net - glaube ich.

b) ich habe auch mal eine entsprechende Lib gemacht, namens Queue, welche zudem mehrere verschiedene Datentypen gleichzeitig enthalten kann.
http://www.robsite.de/php/pureboard-arc ... ight=queue



... und bald gibt es die 'DynData'-Library für heterogene (also mehrere Datentypen gleichzeitig aufnehmende) Listen, Hashtables, Trees, SearchTrees (sogar RedBlackTrees) mit insgesamt mehreren hundert Funktionen. (auch solche, wie z.B. ListUnion, HashtableToFile, etc.)
Ich sitze aber noch an ein paar letzten Funktionen, und vor allem an den Docs, deswegen bringt dir diese letzte Info bestimmt gar nix. /:->
!UD2
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

Oder du übergibst ein Wert (zB. 0,1,2,3,...) und jeder Wert wird halt einer bestimmten LL zugeordnet, wie wärs damit? Zwar etwas unelegant, aber klappt doch, wenn du dein Code ausreichend Kommentierst! :allright:

mfG
Basti
enjoy life... while you can!
Antworten