Seite 1 von 2

Verständnis LinkedList

Verfasst: 06.11.2009 19:55
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


...

Re: Verständnis LinkedList

Verfasst: 06.11.2009 19:59
von AND51
Das 2. AddElement() ist überflüssig.

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:09
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" ?

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:20
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.

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:34
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 ?

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:36
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

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:43
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

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:43
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

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:46
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?

Re: Verständnis LinkedList

Verfasst: 06.11.2009 20:58
von Pelagio
Hier eine schnelle Antworten !

Code: Alles auswählen

#File = "liste.txt"

                WinDir$ = Space(100): GetSystemDirectory_(WinDir$,100)
                
                RunProgram(WinDir$+"\notepad.exe", #File, "" )