Verständnis LinkedList

Anfängerfragen zum Programmieren mit PureBasic.
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Verständnis LinkedList

Beitrag von Mr.Vain »

Hallo,

ich möchte ein kleines Programm schreiben, mit dem ich Daten eingeben / ändern und verwenden kann.

Folgendes Schema:

Feld1 Feld2
a 2
b 4
c 5
z 19


etc.

Wie speicheres ich diese Werte nach Eingabe dieser durch 2 StringGadgets

Versucht habe ich dies folgendermaßen:

Code: Alles auswählen

Structure BasicStructure 
    Field1.s
    Field2.s
EndStructure

NewList WolList.BasicStructure()


If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "Wake on LAN - Version 0.1", #PB_Window_MinimizeGadget)
    
  
  TextGadget  (1, 40, 10, 60, 25, "PC-Name")
  TextGadget  (2, 270, 10, 40, 25, "MAC")
  StringGadget(3, 20, 50, 100, 25, "")
  StringGadget(4, 220, 50,100, 25, "")
  ButtonGadget(5, 80, 100, 60, 25, "Add") 
  ButtonGadget(6, 40, 280, 60, 25, "Exit") 
  ButtonGadget(7, 270, 280, 60,25, "Show")
  ListViewGadget(8, 20, 150, 280, 100)

  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_Gadget

      Select EventGadget()

        Case 1 ; 
           
        
        Case 2 ; 
        
          
        Case 3 
        
        Case 5
                AddElement(WolList())
                WolList()\Field1 = GetGadgetText(3)
                
                AddElement(WolList())
                WolList()\Field2 = GetGadgetText(4)
        
        Case 4


...
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: Verständnis LinkedList

Beitrag von AND51 »

Das 2. AddElement() ist überflüssig.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Verständnis LinkedList

Beitrag von Mr.Vain »

Danke :)


Ich wollte die LinkedList eigentlich zum längerfristigen Speichern von Daten nutzen - > ist dies auch machbar?

Also als Art einer "mini-Datenbank" ?
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Verständnis LinkedList

Beitrag von c4s »

Am einfachsten wäre es wohl, jedes Listen-Element mit Hilfe einer Schleife durchzulaufen und und dann einfach mit WriteString(), WriteByte() etc abzuspeichern. Am Anfang solltest du noch die Anzahl der Elemente abspeichern, damit du weißt wieviele du dann wieder lesen müsstest.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Verständnis LinkedList

Beitrag von Mr.Vain »

Ich werd die Daten einfach in eine txt-Datei abspeichern.

Eine kleine Hilfe benötige ich noch:

Die Daten werden so abgespeichert:
"
text;3435
text2:34322
...
"

Den ersten String bis ";" kann ich so ausgeben:

Code: Alles auswählen

While Eof(0) = 0         
                  PcName$ = StringField(ReadString(0), k, ";")  
                  AddGadgetItem(8, -1, PcName$)

                 Wend
Wie kann ich denn die Werte nach dem ";" auslesen ?
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Verständnis LinkedList

Beitrag von X360 Andy »

Einfach den "Index" Parameter von Strinfield() auf 2 setzen, dazu musst aber der Text der ausgelesen werden soll auch hinten ein ";" haben.

"Text1;Text2;"

Edit .. auf 2 natürlich
Zuletzt geändert von X360 Andy am 06.11.2009 20:44, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Verständnis LinkedList

Beitrag von Kiffi »

Mr.Vain hat geschrieben:Wie kann ich denn die Werte nach dem ";" auslesen ?

Code: Alles auswählen

GeleseneZeile$ = ReadString(0)
  
Feld1$ = StringField(GeleseneZeile$, 1, ";")
Feld2$ = StringField(GeleseneZeile$, 2, ";")
  
Debug Feld1$
Debug Feld2$
Ein Blick in die Hilfe lohnt sich öfter als man denkt ;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Verständnis LinkedList

Beitrag von Pelagio »

@Mr.Vain
Um bei deinem Beispiel zu bleiben, hier ein Codefetzen:

Code: Alles auswählen

While Eof(0) = 0         
        PcName$ = ReadString(0)
        AddGadgetItem(8, -1, StringField(PcName$, 1, ";")  )
        AddGadgetItem(8, -1, StringField(PcName$, 2, ";")  )
 Wend
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Verständnis LinkedList

Beitrag von Mr.Vain »

Danke !!!


Hier bekommt man ja rasend schnelle Antworten ! :)


Noch eine Kleinigkeit:

Code: Alles auswählen

#File = "liste.txt"

                WinDir$ = Space(100): GetSystemDirectory_(WinDir$,100)
                
                RunProgram(WinDir$+"\notepad.exe", "liste.txt", "" )
Wie kann ich bei RunProgram "liste.txt" als String von #File ersetzen?
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Verständnis LinkedList

Beitrag von Pelagio »

Hier eine schnelle Antworten !

Code: Alles auswählen

#File = "liste.txt"

                WinDir$ = Space(100): GetSystemDirectory_(WinDir$,100)
                
                RunProgram(WinDir$+"\notepad.exe", #File, "" )
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Antworten