Seite 2 von 2

Verfasst: 22.08.2007 23:20
von ts-soft
>> Da der Output doch Dynamisch ist

Code: Alles auswählen

If OpenPreferences("bla.cfg")
  Anzahl = ReadPreferenceLong("Anzahl", 0); dynamik
  For I = 1 To Anzahl
    PreferenceGroup(Str(I)) ; [1]
    bla.s = ReadPreferenceString("bla", "")
    SetGadgetText(#Gadget, bla)
    blub.s = ReadPreferenceString("blub", "")
    ; usw
  Next
  ClosePreferences()
EndIf
Am ende dann so ähnlich speichern, ist doch leicht!
Jetzt haste für jeden Eintrag eine ganze Gruppe für mehrere Werte, falls Du
es brauchst, ansonsten kannste es auch ohne Gruppen, nur mit nummern
machen.

Schreib Dir erstmal mit Notepad eine prefs, wie sie aussehen könnte!

Verfasst: 22.08.2007 23:24
von Kaeru Gaman
und wie ich bereits sagte, man kann die werte auch direkt speichern.

hier mal ne kleine demo.
einfach was einstellen und "save" drücken, dann beenden.
wieder starten, und "load" drücken. voila.

Code: Alles auswählen

Dim Wap1$(4)
Dim Wap2$(4)

WapNr1 = 0
WapNr2 = 0

OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  ComboBoxGadget(0, 10, 10, 250, 100)
  For n = 0 To 4
    Read Wap1$(n)
    AddGadgetItem(0, -1,Wap1$(n))
  Next 
  SetGadgetState(0, 0)

  ComboBoxGadget(1, 10, 40, 250, 100)
  For n = 0 To 4
    Read Wap2$(n)
    AddGadgetItem(1, -1,Wap2$(n))
  Next 
  SetGadgetState(1, 0)

  ButtonGadget(2,10,70,70,20,"Load")
  ButtonGadget(3,90,70,70,20,"Save")

  Repeat 
    EvID = WaitWindowEvent()
    GadID = EventGadget()
    Select EvID
      Case #PB_Event_Gadget
        Select GadID
          Case 0
            WapNr1 = GetGadgetState(0)
            Debug WapNr1  ;kontrolle
          Case 1
            WapNr2 = GetGadgetState(1)
            Debug WapNr2  ;kontrolle
          Case 2
            WapNr1 = 0  ;initialisieren, falls file nicht vorhanden
            WapNr2 = 0
            If ReadFile(0,"status.cfg")
              WapNr1 = ReadLong(0)
              WapNr2 = ReadLong(0)
              CloseFile(0)
            EndIf
            SetGadgetState(0, WapNr1)
            SetGadgetState(1, WapNr2)
          Case 3
            If CreateFile(0,"status.cfg")
              WriteLong(0,WapNr1)
              WriteLong(0,WapNr2)
              CloseFile(0)
            Else
              MessageRequester("Error","Can't save!",#MB_ICONERROR)
            EndIf
        EndSelect
    EndSelect
  Until EvID = #PB_Event_CloseWindow

DataSection
  Data.s "Keine", "Waffe1", "Waffe2", "Waffe3", "Waffe4"
  Data.s "Keine", "Waffe1", "Waffe2", "Waffe3", "Waffe4"
EndDataSection
PS:
so, jetzt hab ich mir dein eingangsposting noch mal angesehen,
und festgestellt, dass dir das nicht wirklich hilft.

du bräuchtest also eine liste, wo die textausgabe drin gespeichert wird,
damit du mehrere punkte anführen kannst.
zusätzlich würde ich aber die ganzen werte auch noch einzeln speichern,
damit das ganze wiederherstellbar und editierbar wird.
also, damit du die datei wieder öffnen kannst, und einträge ändern.

das wäre dann aber eine datei, die nur von deinem editor bearbeitet werden kann,
aus dieser kannst du dann das fertige script erzeugen.
das wiederum kanst du dann nicht mehr einladen und verändern,
aber du kannst die erzeugerdatei erneut öffnen, bearbeiten, und das script überschreiben.

mit deiner vermutung, dass du ne liste brauchst, warst du auf dem rechten weg.
schau in der Help mal ins kapitel LinkedList.

Verfasst: 23.08.2007 00:45
von Coder Pinhead
Kaeru Gaman hat geschrieben:mit deiner vermutung, dass du ne liste brauchst, warst du auf dem rechten weg.
schau in der Help mal ins kapitel LinkedList.
<)

Nur kriege ich trotzdem nichts sinnvolles zustande :( :cry: :cry:
Vielleicht ist es auch nur zu spät :roll:
Mal schauen vielleicht schaue ich mir das Morgen noch mal an wen ich Zeit finde <)
Und wen ich es dan die Tage immer noch nicht gepackt habe.
Compiliere ich einfach eine Preview Beta und Poste dan wieder einen Teil des Source's evtl könnt ihr mir dann besser Helfen wen ihr seht was ich meine :/

Verfasst: 23.08.2007 00:56
von Kaeru Gaman
ich versuchs ma zusammenzufassen...

also, du hast ein paar gadgets, die ne bestimmte einstellung haben können.
aus denen erzeugst du deinen texteintrag, den man unten sieht.

für das zusammen brauchst du eine structure, die also zumindest die grundwerte für die gadgeteinstellungen beinhaltet.
(so ähnlich wie die variablen WapNr1 und WapNr2 in meinem beispiel, nur als teil einer struct)
außerdem sollte die struct die taste zum einbinden enthalten (bind "1")
und ggf eine laufende nummer.

mit dieser struct erzeugst du eine liste.
in dieser liste kannst du nun die ganzen bindings hintereinander speichern.
du bräuchtest also noch eine zusätzliche combobox, wo drinsteht, welchen eintrag du bearbeitest.
wenn man dort einen auswählt, werden die anderen gadgets entsprechend des eintrags eingestellt.

so eine liste kannst du dann einfach als strukturierte werte speichern,
und auch wieder einladen, bearbeiten, etc.

und wenn du dann "script erzeugen" anklickst,
erzeugt dein programm aus dieser liste das komplette buyscript,
das dann von CS eingelesen werden kann, aber eben nicht mehr von deinem programm bearbeitet.
dafür hast du die gespeicherte liste, die erzeuger-datei,
aus der kannst du jederzeit wieder ein script erzeugen.

das mal grob umrissen, das sollte das konzept klarer machen.

Verfasst: 23.08.2007 15:17
von Coder Pinhead
Ich habe es jetzt selbst herausgefunden wie ich es hinbekomme :mrgreen:
Was ne tüte schlaff nicht alles bewirkt :lol:

Und Kaeru Gaman es war viel einfacher als man glaubt also man braucht dafür aufjedenfall keine weitere combobox ;)

Verfasst: 23.08.2007 15:23
von Kaeru Gaman
> Und Kaeru Gaman es war viel einfacher als man glaubt also man braucht dafür aufjedenfall keine weitere combobox
irgendein weiteres gadget brauchst du, wenn du die liste editierbar halten willst.

wenn du einfach nur einträge hinzufügen willst,
ohne die vorher abgeschickten einsehen zu können,
dann brauchst du natürlich nix weiter.