Seite 1 von 2

Wie kann ich sachen einer Liste hinzugügen und dan Speichern

Verfasst: 22.08.2007 21:01
von Coder Pinhead
So da ich jetzt wieder etwas Zeit habe wollte ich an mein Tool weiter basteln <) . Nur irgend wie komme ich nicht ganz weiter :(

Screenshot zu meinem Tool:
Screenshot wurde entfernt!

Also ich möchte mit den Button "Add" den "nhalt vom "StringGadget" in die Datei "buyscript.cfg" speichern.
So und da ist das Problem! Man will ja nicht nur ein Skript in die Datei Speichern sondern mehrere.

So umgefähr soll dan der Inhalt der "buyscript.cfg" werden:

bind "1" "buy m4a1; buy ak47; buy primammo"
bind "2" "buy deagle; buy elite; buy secammo"
...
....
.....
usw
bla bla bla

-----

Hier erst mal ein Teil des Sources:

Code: Alles auswählen

ElseIf EventGadget = #Button_3 ;Add Button
  Select EventGadget()
    Case #Button_3
      
      bla.s = GetGadgetText(#String_0)
      
  EndSelect
ElseIf EventGadget = #Button_4 ;Save Config Button
  Select EventGadget()
    Case #Button_4
      
      If CreateFile(0,"autoexec.cfg")
        WriteStringN(0,"exec buyscript.cfg")
        CloseFile(0)
      Else
        MessageRequester("Error","Can't create "+Chr(34)+"autoexec.cfg"+Chr(34)+"!")
      EndIf
      
      If CreateFile(1,"buyscript.cfg")
        For xxx = 1 To 10
          WriteStringN(1,bla+" //"+Str(xxx))
        Next
        CloseFile(1)
      Else
        MessageRequester("Error","Can't create "+Chr(34)+"buyscript.cfg"+Chr(34)+"!")
      EndIf
      
  EndSelect
Ach das mit der For Next Schleife habe ich erst mal nur so gemacht weil ich nicht weiß wie ich das Problem löse :/

Ich hoffe mir kann da jemand ein Tip geben <)
Danke schon mal :wink:

Verfasst: 22.08.2007 21:11
von milan1612
Eine Möglichkeit wäre den Text aus der autoexec.cfg Zeile für Zeile auszulesen
und dann die neue Zeile an den String hängen
und dann den gesamten Text in die Datei schreiben.
(und dann... und dann... dumme Satzkonstruktion :roll: )

Verfasst: 22.08.2007 21:16
von ts-soft
Preferences nutzen. Einmal die Anzahl speichern und Gruppen dann entsprechend anlegen:
[1]
[2]
oder
1 = blub
2 = bla
usw., irgendwie so in der Richtung :wink:

Verfasst: 22.08.2007 21:29
von milan1612
Oder ganz einfach das StringGadget multiline machen (schon wieder so tolles Deutsch :lol: )
und erst nachdem alle Zeilen generiert wurden in die Datei schreiben

Verfasst: 22.08.2007 21:31
von Coder Pinhead
Danke,

Hat jemand vielleicht ein Beispiel Skript? :cry:
Weil ich habe keine Ahnung was ich da jetzt schreiben soll :(

---

@ts-soft
Was meinste mit Preferences?
Sowas??

For bla = 1 To 2
bla
Next

Verfasst: 22.08.2007 21:34
von Kaeru Gaman
> Was meinste mit Preferences?
Help lesen, bitte.

du solltest grundsätzlich deine werte nicht in gadgets speichern,
sondern dort nur anzeigen.
speichern tust du das in variablen, in einer structur, in einer liste, wie auch immer.

und wenn deine werte immer eine feste größe haben und in fester reihenfolge stehen,
kannst du sie auch als einfache Longs hintereinander weg in eine datei schreiben.

Verfasst: 22.08.2007 22:45
von Coder Pinhead

Code: Alles auswählen

text$ = Test

Code: Alles auswählen

ElseIf EventGadget = #Button_4 ;Save Config Button
  Select EventGadget()
    Case #Button_4
     
      If CreateFile(0,"autoexec.cfg")
        WriteStringN(0,"exec buyscript.cfg")
        CloseFile(0)
      Else
        MessageRequester("Error","Can't create "+Chr(34)+"autoexec.cfg"+Chr(34)+"!")
      EndIf

If CreateFile(1,"buyscript.cfg")
        WriteStringN(1,"Test")
        CloseFile(1)
      Else
        MessageRequester("Error","Can't create "+Chr(34)+"autoexec.cfg"+Chr(34)+"!")
      EndIf
      
If ReadFile(1,"autoexec.cfg")
              Repeat
                text$=ReadString(1) 
                If text$=text$
                  WriteStringN(1,MeineStringVariableMitDenBuyBinds)
                EndIf
              Until Eof(1)
            EndIf
Geht nicht :( ?

Edit:

@Kiffi
Habe es Editiert -> (ReadString(0))
Trotzdem geht es nicht^^
Was ja auch klar ist laut deiner erklärung^^

Verfasst: 22.08.2007 22:55
von ts-soft
Haste Preferences nicht gefunden?
http://www.purearea.net/pb/german/manua ... index.html
xml, csv usw. wären natürlich auch noch möglich :wink:

Verfasst: 22.08.2007 23:03
von Kiffi
@Coder Pinhead: auch ich würde Dir (wie Thomas) die Preferences-Befehle
an's Herz legen.

Abgesehen davon, ein paar Worte zu Deinem Code.
Coder Pinhead hat geschrieben:

Code: Alles auswählen

If ReadFile(1,"autoexec.cfg")
              Repeat
                text$=ReadString(0) 
                If text$=text$
                  WriteStringN(1,MeineStringVariableMitDenBuyBinds)
                EndIf
              Until Eof(1)
            EndIf
Geht nicht :( ?
kein Wunder:

1.) ReadFile() öffnet eine Datei zum Lesen. Dennoch versuchst Du mit
WriteStringN() da was reinzuschreiben.

2.) Du öffnest die Datei mit ReadFile(1...), versuchst dann aber mit
ReadString(0), etwas auszulesen. Das geht natürlich nicht.

3.) 'If text$ = text$' ist ziemlicher Mumpitz.

4.), 5.), 6.) spare ich mir jetzt aus Zeitgründen.

Letztendlich ist mir völlig unklar, was Du mit Deinem Code bezweckst.

Also: Preferences benutzen und beizeiten mal gewissenhaft die PB-Hilfe
zum Thema Datei-Behandlung studieren ;-)

Grüße ... Kiffi

Verfasst: 22.08.2007 23:08
von Coder Pinhead
ts-soft hat geschrieben:Haste Preferences nicht gefunden?
http://www.purearea.net/pb/german/manua ... index.html
xml, csv usw. wären natürlich auch noch möglich :wink:
Gefunden hatte ich es aber ich verstehe damit nicht was ich machen soll.
Da der Output doch Dynamisch ist weil der Benutzer ja selber wählen kann was er haben möchte. Also müsste ich das doch evtl über "NewList" (Dynamic Linked List) machen oder nicht? Und wen ja wo finde ich ein Tut zu Dynamic Linked List?