Linked List

Anfängerfragen zum Programmieren mit PureBasic.
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Linked List

Beitrag von dietmar »

Ja ich weiß dieses Thema wurde schon oft durchgekaut. Und Ja ich hab auch die vielen Zitate gelesen das die LinkedList Global ist. Und trotzdem nocheinmal die Frage kann es sein das wenn ich eine Liste innerhal einer Prozedure füllen will das diese innerhalb der Prozedure Gültigkeit hat und auch da die Werte speichert. Aber außerhalb der Prozedur ist die Liste wieder leer.

Weiß jemand abhilfe?

Ja ich hab die hilfe bemüht.
Ja ich hab die Forensuche bemüht.
Ja ich bekenne mich schuldig es immer nich nicht verstanden zu haben
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Und Ja ich hab auch die vielen Zitate gelesen das die LinkedList Global ist.

dann hast du alte posts gelesen.

seit 4.0 ist die LL nicht mehr Global, außer du machst sie selber dazu indem du das schlüsselwort Global benutzt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Beitrag von dietmar »

Das mit Global hab ich mir auch gedacht hat leider nicht geholfen.
Wenn es doch nur so einfach wäre. Aber danke schon mal für die schnelle Antwort.
Mal noch kurz was anderes. Ich find die Forensuche ja soweit super aber wie soll man denn den überblick behalten was noch richtig ist und was nicht?
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Beitrag von dietmar »

Hm das seltsame ist auf einmal geht es ohne jede Änderung nur einmal den Editor zu- und wieder aufmachen. Kann mir das einer Erklären?
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ohne Glaskugel leider nicht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Du kannst deine LinkedList, die außerhalb einer Prozedur definiert wurde, innerhalb einer Prozedur benutzen, indem du sie teilst (Shared), als Parameter übergibst oder, wie bereits erwähnt, global (Global) definierst.

@ Editor auf und zu machen: Hast du vielleicht PB 4.0 und eine ältere PB Version paralell installiert und dann deinen Code versehentlich und unwissentlich in zwei verschiedenen PB Versionen probiert? Anders kann ich es mir nicht erklären - es sei denn, dein Computer hatte ein seelisches Tief, während du den 1. Versuch gestartet hast... :wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

dein Computer hatte ein seelisches Tief, während du den 1. Versuch gestartet hast... Wink
:mrgreen: meiner hat das jedesmal wenn er das Windowslogo auch nur im entferntesten darstellen muss ... ;)

-- Zum Topic

Methode 1:

Code: Alles auswählen

...
GLOBAL Mylist.Mystructure
...

Procedure fillMyList()
  ...
  Mylist\value = xy
  ...
Endprocedure
Methode 2:

Code: Alles auswählen

Mylist.Mystructure

Procedure fillMyList()
  SHARED Mylist
  ...
  Mylist\value = xy
  ...
Endprocedure
Methode 3:

Code: Alles auswählen

Structure foo
  a.l
  b.s
EndStructure

abc.foo

OpenConsole()

Procedure setfoo(*thisabc.foo)
  *thisabc\a = 77
EndProcedure

setfoo(@abc)

PrintN("foo: "+Str(abc\a)+" () "+abc\b)

Delay(10000)
Thalius
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Methode 4 (die empfohlene :mrgreen: )

Code: Alles auswählen

Structure Mystructure
  value.l
  ; ...
  ; ...
EndStructure

Procedure fillMyList(list.Mystructure())
  AddElement(list())
  list()\value = 3
  AddElement(list())
  list()\value = 4 
EndProcedure 

NewList Mylist.Mystructure()
; AddElement(Mylist())
; Mylist()\value = 1
; AddElement(Mylist())
; Mylist()\value = 2

fillMyList(Mylist())

ForEach Mylist()
  Debug Mylist()\value
Next 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Methode 4 ...


- sollte auch nur n Beispielcode sein :allright:



Thalius
Antworten