Verständnisproblem LinkedList

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
alen
Beiträge: 107
Registriert: 09.04.2007 17:38
Computerausstattung: Main Hardware: AMD Ryzen 5 1600 - 6 Core / Gigabyte B450 Aorus Pro / Sapphire RX580 8GB
PB 5.61 and earlier @ Manjaro Linux XFCE x64/ Fedora Linux Cinnamon x64 / Windows 10 x64 on various Hardware Platforms
Wohnort: Duisburg
Kontaktdaten:

Verständnisproblem LinkedList

Beitrag von alen »

Hallo Zusammen,

ich komme irgendwie nicht ganz hinter die genaue Funktion von LinkedLists.

Ich versuche folgendes:

Code: Alles auswählen

Procedure Error()
  Structure result
    number.s
    state.s
    string.s
  EndStructure
  
  NewList result.result()
  AddElement(result())
  
  result()\number = "12345"
  result()\state  = "C32A"
  result()\string  = "File not Found"
  ProcedureReturn result()
EndProcedure

MessageRequester("Titel", Str(Error()))
die entstandene LinkedList soll dann ausserhalb der Funktion weiter benutzt werden. In meinem Fall wollte ich nur sehen was drin steckt in der Linked List. Ich bekomme als Ergebnis eine Zahl zurückgeliefert.

Was ich eigentlich brauchen würde ist ein assoziatives Array mit Schlüssel und Wert. Kann mir da jemand auf die Sprünge helfen ? Ich habe von diversen Scriptsprachen diese Art von Funktion einfacher in Erinnerung.

Vielleicht hat auch jemand einen Link auf ein Tutorial wo das mit den LinkedLists für Dumme mit Beispielen erklärt wird.

Grüße
Alen Hopek
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 »

Strukturen sind immer Global und die Deklaration in einer Procedur macht
keinen Sinn.
LinkListen können entweder Global genutzt werden, oder besser als Parameter:

Code: Alles auswählen

Structure result
  number.s
  state.s
  string.s
EndStructure

Procedure Error(result.result())
  AddElement(result())

  result()\number = "12345"
  result()\state  = "C32A"
  result()\string  = "File not Found"
EndProcedure

NewList myerror.result()
Error(myerror())
Debug myerror()\number
; ...
assosiative Arrays sind nicht nativ in PB enthalten, gibt aber diverse
Beispiele dafür. Einfach mal suchen

// Edit
falsches ProcedureReturn entfernt
Zuletzt geändert von ts-soft am 15.06.2007 09:51, insgesamt 1-mal geändert.
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
Little John

Beitrag von Little John »

ts-soft hat geschrieben:

Code: Alles auswählen

Procedure Error(result.result())
  AddElement(result())

  result()\number = "12345"
  result()\state  = "C32A"
  result()\string  = "File not Found"
  ProcedureReturn result()
EndProcedure
Ist es wirklich möglich, mit ProcedureReturn eine Linked List zurückzugeben?

Gruß, Little John
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Nein, es ergibt ja auch keinen Sinn, da LLs global sind.
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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 »

Little John hat geschrieben: Ist es wirklich möglich, mit ProcedureReturn eine Linked List zurückzugeben?

Gruß, Little John
Nein, den Teil hab ich vergessen zu löschen.:oops:
Ist ja auch nicht nötig wenn die LinkList übergeben wurde :wink:
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
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 »

Tafkadasom2k5 hat geschrieben:Nein, es ergibt ja auch keinen Sinn, da LLs global sind.
Wo lebst Du denn :wink: , wir nutzen fast alle PB4x und LinkListen sind
nicht automatisch global!
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
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Achja, da war ja was. :oops:
Aber trotzdem ist es nicht möglich eine LL per ProcedureReturn zu übergeben, oder sehe ich das falsch?

Im Falle dieser Error-Routine wäre eine globale LL aber schon angebracht, finde ich persönlich. Vor Allem, wenn man intern dann auch noch mit ner Struktur arbeitet :allright:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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 »

>> Im Falle dieser Error-Routine wäre eine globale LL aber schon angebracht, finde ich persönlich
Ich frag mich wozu überhaupt eine LinkList, eine strukturierte Variable sollte
doch genügen. Mehrere Fehler zu verwalten macht meist nicht soviel sinn
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
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Ich verweise mal auf den FireFox:
Öffne mal diese Seite, gehe auf "Extras" und dann auf "Fehler-Konsole". Das wäre ein Anwendungsbeispiel <)

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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 »

@Tafkadasom2k5
Aus diesem Grunde habe ich meist Fett geschrieben, da mir dies klar ist.
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
Antworten