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

Anfängerfragen zum Programmieren mit PureBasic.
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

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

Beitrag 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:
Zuletzt geändert von Coder Pinhead am 23.08.2007 20:16, insgesamt 1-mal geändert.
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag 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: )
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
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 »

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:
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
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag 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
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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^^
Zuletzt geändert von Coder Pinhead am 22.08.2007 23:15, insgesamt 4-mal geändert.
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
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 »

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:
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
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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?
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Antworten