| Autor |
Beitrag |
WormHole
      
Beiträge: 145
|
Verfasst: Di 02.08.05 17:48
Ich habe eine Listbox in dieser stehen mehrere Namen.
Diese sollen 2 Gruppen zugeordnet werden z.B.
Gruppe1:
Paul
Peter
Hans
Gruppe2:
Anne
Jochen
Die Gruppen kann ich in einer Combobox auswählen wenn ich das tue sollen die richtigen Namen in der Listbox erscheinen(Sie sollen also beim ändern der Combobox aus der ini gelesen werden - und auch alle untereinander stehen, so, dass man sie einzeln auswählen kann)
Wie geht das?
|
|
en!gma
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Di 02.08.05 17:53
hmm gut das du einen thread erstellst.
ich hatte nämlich genau das gleiche vor, nur halt andersrum, also ausreden
zum speichern hab ich mir gedacht, dass man es so einspeichern könnte als 1 string:
Quelltext 1: 2: 3:
| [namen] gruppe1=°Paul°,°Peter°,°Hans° gruppe2=°Anne°,°Jochen° |
und dann liest man das später so aus.
aber keinen plan wie das geht
//edit
also man macht ne listbox. dann on click führt man die ladeprozedur aus.
und da dann irgendwie mit
Delphi-Quelltext 1: 2:
| for i:=0 to gruppe1[size] do listbox1.addline(gruppe1[i]); |
oder sowas in der art
Moderiert von raziel: Delphi-Tags hinzugefügt.
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Di 02.08.05 17:56
Ja, ich hatte es auch schon mit Delimitedtext versucht, dann wird es so gespeichert wie es bei dir steht, aber beim auslesen in der Listbox ist es dann halt nur ein item und man kann die items nicht mehr einzeln auswählen.
|
|
en!gma
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Di 02.08.05 17:58
also irgendwie kann man die wörter darin trennen.
und wenn man die getrennt und in ein array gespeichert hat.
dann kann man die so oder ähnlich in eine listbox füllen:
Quelltext 1: 2:
| for i:=0 to gruppe1[size] do listbox1.addline(gruppe1[i]); |
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Di 02.08.05 18:07
Die Ini muss so aussehen
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| [Jungs] Anzahl Jungen=3 Junge1=Paul Junge2=Peter Junge3=Hans
[Mädchen] Anzahl Mädchen=2 Mädchen1=Anne Mädchen2=Jochen |
Auslesen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| uses IniFiles;
procedure xyz; var Ini: TIniFile; i, j: Integer; begin Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Ini.ini'); i:=Ini.ReadInteger('Jungs', 'Anzahl Jungen', 0); for j:=1 to i do begin String[j]:=Ini.ReadString('Jungs', 'Junge'+IntToStr(j), ''); end; FreeAndNil(Ini); end; |
Für Mädchen kannst du es selber machen.
|
|
en!gma
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Di 02.08.05 18:08
würde es auch so gehen wie ich es vorgeschlagen habe?
oder ist das eher unschön?
weiss nicht, so würde man schon platz sparen 
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Di 02.08.05 18:10
Ja es würde so gehen. Allerdings mit wesentlich mehr Aufwand, da du die Strings noch zerlegen musst.
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Di 02.08.05 18:14
könnte jemand auch mal kurz erklären wie das mit der oben beschriebenen formatierung beim speichern geht?
greetz WormHole
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Di 02.08.05 18:33
Meinst du die Formatierung von en!gma? Oder die der Ini?
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Di 02.08.05 18:39
wie ich das in der:
[Jungs]
Anzahl Jungen=3
Junge1=Paul
Junge2=Peter
Junge3=Hans
[Mädchen]
Anzahl Mädchen=2
Mädchen1=Anne
Mädchen2=Jochen
Formatierung in die ini speichern können (aus der listbox, denn die ist im programm veränderbar)
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Di 02.08.05 18:55
Die Ini besteht aus 3 Dingen.
1. Abschnittsname
2. Wertname
3. Wert
Und so ist eine Ini aufgebaut
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| [Abschnittsname] Wertname=Wert Wertname=Wert ...
[Abschnittsname] Wertname=Wert Wertname=Wert ... |
Und ReadInteger verlangt die Paramter(in der Reihenfolge) Abschnittsname, Wertname und den Standardrückgabewert (in der Reihenfolge). Der Standardrückgabewert wird zurückgegeben, wenn der Wert des Wertnamens ungültig ist.
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Di 02.08.05 19:33
Also nochmal:
Ich möchte gerne alle Listbox einträge in eine ini schreiben
gruppewählen.text = Combobox mit den verschiedenen gruppen (Gruppe 1, Gruppe 2 etc).
mitgliederlist = Listbox in der die Namen stehen.
Delphi-Quelltext 1:
| ini.WriteString(gruppewaehlen.text,'Gruppe',mitgliederlist.??? |
Es ist ein bisschen schwierig zu erklären, ich danke für eure Geduld...
Dankeschön im Vorraus!
WormHole
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 02.08.05 23:24
Moin!
Schau mal hier, das sollte dir helfen.
cu
Narses
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Di 02.08.05 23:28
Das habe ich schon gefunden, nur, um ehrlich zu sein, blicke ich da total nich durch und deswegen frage ich ob es eine andere, einfachere Methode gibt.... !?!
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 02.08.05 23:56
Moin!
OK, hab mir nochmal genau angesehen, was du da im ersten Beitrag geschrieben hast...
WormHole hat folgendes geschrieben: | Ich habe eine Listbox in dieser stehen mehrere Namen.
Diese sollen 2 Gruppen zugeordnet werden z.B.
Die Gruppen kann ich in einer Combobox auswählen |
Hier stellt sich mir die Frage, ob du die Zuordnung der Namen zu den Gruppen auch im Programm erledigen willst oder ob die Namen bereits zugeordnet in der INI stehen sollen. Also, Frage:
Stehen die Namen nur als Liste (sozusagen ungeordnet) in der INI oder ist da bereits die Gruppenzuordnung vorgesehen?
cu
Narses
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Mi 03.08.05 08:08
In der Ini soll schon die Gruppenzuordnung vorhanden sein. Um es noch einmal deutlicher zu zeigen:
z.B:
Ein "Spieler" möchte gerne wissen welche Charakter alle in Gruppe 1 sind. Er geht auf die Combobox und wählt Gruppe 1 aus. Nun erscheinen alle Namen der Charaktere in der Listbox. Dann möchte er einen weiteren Charakter in diese Gruppe packen. Er geht auf Charakter hinzufügen (is ein button und das klappt auch) und der Charakter erscheint in der Listbox.
Nun möchte er auch noch die Charaktere der Gruppe 2 sehen. Er klickt in der Combobox auf Gruppe 2 und die Namen erscheinen wieder in der Listbox. Dann will er sich nochmal die Namen der Gruppe 1 ansehen, er klickt wieder in der Combobox auf Gruppe 1 und es sollen die Namen aller (also auch der Name von dem Charakter den er gerade erst hinzugefügt hat) erscheinen.
Hoffe diesmal ist es klar 
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mi 03.08.05 08:41
Das hinzufügen zu der Ini kannst du so realisieren (wieder nur für Jungs, Mädchen musst du selber machen)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure abc (Junge: String); var Ini: TIniFile; i: Integer; begin Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Ini.ini'); i:=Ini.ReadInteger('Jungs', 'Anzahl Jungen', 0); inc(i); Ini.WriteInteger('Jungs', 'Anzahl Jungen', i); Ini.WriteString('Jungs', 'Junge'+IntToStr(i), Junge); FreeAndNil(Ini); end; |
|
|
WormHole 
      
Beiträge: 145
|
Verfasst: Mi 03.08.05 09:16
Heiko hat folgendes geschrieben: |
Delphi-Quelltext 1:
| String[j]:=Ini.ReadString('Jungs', 'Junge'+IntToStr(j), ''); | |
Da gibt er mir nen Fehler:
( expected but [ found.
Wenn ich die Klammer veränder gibt er mir den fehler:
Assignment to FOR loop variable j.
Das rall ich mal wieder net 
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mi 03.08.05 09:26
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: Mi 03.08.05 09:27
"String" ist ein Eigenname. Du musste eine Variable deklarieren, die nicht "String" heißt, z.B. "MeinString".
"MeinString" sollte außerdem ein Array of String sein, also:
Delphi-Quelltext 1: 2:
| var MeinString: Array of String; |
oder ohne dynamische Arrays:
Delphi-Quelltext 1: 2:
| var MeinString: Array[1..5] of String; |
_________________ Radioactive
"Wer scrollt, verliert!" Matthias Stein, Informatiklehrer am GG
|
|