| Autor |
Beitrag |
mhxcm
      
Beiträge: 54
|
Verfasst: Di 19.02.08 10:06
Morgääääääähhhhnnnnn....
Habe folgendes Problemschen. Ich habe eine Benutzersteuerung in der bis zu 5 Benutzer angelegt werden können. Wenn ich jetzt 5 Benutzer angelegt hab (stehen in ner ini) und sagen wir mal Benutzer 3 lösche, möchte ich das ich einen neuen Benutzer anlegen kann, der automatisch zu Benutzer 3 wird (da ja die Sektionen 1,2,4,5 belegt sind). Egal was ich auch probiere, er legt mir, wenn noch nichts in der ini steht 5 gleiche Benutzer an, wenn ich nur einen anlegen will.
Quellcode:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure THauptmenue.btnbenutzerClick(Sender: TObject); begin ini := Tinifile.Create('C:\\Programme\stress.ini'); try ini.ReadSections(Hauptmenue.ListBox1.Items); finally ini.free; end;
if application.messagebox('Wollen Sie einen neuen Benutzer anlegen?','ACHTUNG!!!',IDOK) = IDOK then begin var_j :=(Hauptmenue.ListBox1.Items.Count) ; |
Das steht in meinem Hauptmenü, zum auslesen wieviele Benutzer schon vorhanden sind
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| procedure Tbenutzer.btnokbenutzerClick(Sender: TObject); var i : integer; begin
if var_j < 5 then begin var_j:=var_j + 1; begin ini := TiniFile.Create('C:\\Programme\stress.ini'); if ini.SectionExists('Benutzer'+inttostr(var_j)) then ini.free
else try ini.WriteString('Benutzer'+inttostr(var_j),'Name',edtname.text); ini.WriteString('Benutzer'+inttostr(var_j),'Vorname',edtvorname.text); ini.WriteString('Benutzer'+inttostr(var_j),'Spielname',edtspielname.text); finally ini.free; end; ini2 := TiniFile.Create('C:\\Programme\zähler.ini'); try ini2.WriteInteger('Sektion','Zähler',var_j) ; finally ini2.free end;
end; |
Will halt das er selbständig erkännt, aha, ich hab noch keinen also lege ich nur den ersten an, oder aha, ich hab die Benutzer 1,2,3,5 also kann ich noch einen mit Identität 4 anlegen.
Kann jemand helfen???
mfg Markus
_________________ 1100101 heißt ich Liebe dich ich möchte bei dir sein! (search Song:"Das Modul - 1100101")
|
|
Xong
      
Beiträge: 113
WIN 2000
Borland Developer Studio 2006
|
Verfasst: Di 19.02.08 10:43
Ich sehe keine Schleife, in der du alle Einträge durchgehst.
Außerdem kannst du nicht einfach die Anzahl speichern, sondern du musst entweder speichern, wo ggf. noch ein Benutzer hin kann oder jedes Mal, wenn notwendig, selbst ermitteln wo noch was frei ist.
Ich empfehle die zweite Variante.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 19.02.08 10:49
Moin!
Bau deine INI so auf, dann ist das einfacher:
Quelltext 1: 2: 3: 4: 5:
| [Benutzer] Count=3 User1=Heinz User2=Willi User3=Karl |
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
mhxcm 
      
Beiträge: 54
|
Verfasst: Di 19.02.08 10:54
@Narses: Meine INI sieht so aus
Delphi-Quelltext 1: 2: 3: 4:
| [Benutzer1] Name=Lustig Vorname=Peter Spielname=Bauwagen |
Hab halt zu den verschiedenen Benutzern noch eindeutige Erkennungszeichen. Da soll später auch noch versch. Einstellungen zu den Benutzern gespeichert werden. Weiß nicht ob das dann mit deiner Variante der INI Datei funktioniert! Zumindest wüsste ich jetzt nicht wie???!
Trotzdem thx for the idea
_________________ 1100101 heißt ich Liebe dich ich möchte bei dir sein! (search Song:"Das Modul - 1100101")
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 19.02.08 11:29
Moin!
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| [Benutzer] Count=2 Name1=Lustig Vorname1=Peter Spielname1=Bauwagen Name2=Lachhaft Vorname2=Ludger Spielname2=Trecker |
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
mhxcm 
      
Beiträge: 54
|
Verfasst: Di 19.02.08 11:50
Ja, hast recht, ist mir im Nachhinein auch eingefallen. Habe es mittlerweile mal vorerst so gelöst:
mhxcm hat folgendes geschrieben: | 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure Tbenutzer.btnokbenutzerClick(Sender: TObject); var i : integer; begin
if var_j < 5 then begin var_j:=var_j + 1; for i:= 1 to 5 do begin ini := TiniFile.Create('C:\\Programme\stress.ini'); if ini.SectionExists('Benutzer'+inttostr(i)) then ini.free
else break; end; try ini.WriteString('Benutzer'+inttostr(i),'Name',edtname.text); ini.WriteString('Benutzer'+inttostr(i),'Vorname',edtvorname.text); ini.WriteString('Benutzer'+inttostr(i),'Spielname',edtspielname.text); finally ini.free; end; ini2 := TiniFile.Create('C:\\Programme\zähler.ini'); try ini2.WriteInteger('Sektion','Zähler',var_j) ; finally ini2.free end;
end; |
|
Aber werde deine INI Variante noch im Hinterkopf behalten... thx für die Antworten
mfg Markus
_________________ 1100101 heißt ich Liebe dich ich möchte bei dir sein! (search Song:"Das Modul - 1100101")
|
|
Xong
      
Beiträge: 113
WIN 2000
Borland Developer Studio 2006
|
Verfasst: Di 19.02.08 11:59
Du erhöhst var_j genau einmal. Wozu?
Dann schreibst du es auch noch in die zähler.ini-Datei. Bist du dir sicher, dass du var_j nicht in der For-Schleife erhöhen willst? (Aber bitte nur dann, wenn der Benutzerplatz belegt ist, sonst wunderst du dich wieder... =) )
Edit: Außerdem reicht es, die ini2 nach der For-Schleife zu ändern.
LG,
Xong
|
|
mhxcm 
      
Beiträge: 54
|
Verfasst: Di 19.02.08 12:18
Danke für den Hinweis
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure Tbenutzer.btnokbenutzerClick(Sender: TObject); var i : integer; begin for i:= 1 to 5 do begin ini := TiniFile.Create('C:\\Programme\stress.ini'); if ini.SectionExists('Benutzer'+inttostr(i)) then ini.free
else break; end; if i > 5 then MessageBox(0,'Die höchstzulässige Anzahl an Benutzern wurde erreicht! Bitte löschen Sie einen Benutzer zuerst, um ein neues Profil anzulegen!!! MFG','fehler',ID_OK)
else try ini.WriteString('Benutzer'+inttostr(i),'Name',edtname.text); ini.WriteString('Benutzer'+inttostr(i),'Vorname',edtvorname.text); ini.WriteString('Benutzer'+inttostr(i),'Spielname',edtspielname.text); finally ini.free; end ; benutzer.visible := false; hauptmenue.visible := true; end; |
Ich brauche nun die zähler.ini gar nicht mehr.... aber wäre die nicht sowieso, nachdem die Schleife unterbrochen wird erst beschrieben worden??? Oder gibt es auch nen STOP befehl, der dann wirklich die komplette Schleife Stopt und mit den folgenden Befehlen weiterarbeitet?
mfg Markus
_________________ 1100101 heißt ich Liebe dich ich möchte bei dir sein! (search Song:"Das Modul - 1100101")
|
|
Xong
      
Beiträge: 113
WIN 2000
Borland Developer Studio 2006
|
Verfasst: Di 19.02.08 12:28
mhxcm hat folgendes geschrieben: | Danke für den Hinweis
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure Tbenutzer.btnokbenutzerClick(Sender: TObject); var i : integer; begin for i:= 1 to 5 do begin ini := TiniFile.Create('C:\\Programme\stress.ini'); if ini.SectionExists('Benutzer'+inttostr(i)) then ini.free else break; end;
if i > 5 then MessageBox(0,'Die höchstzulässige Anzahl an Benutzern wurde erreicht! Bitte löschen Sie einen Benutzer zuerst, um ein neues Profil anzulegen!!! MFG','fehler',ID_OK) else try ini.WriteString('Benutzer'+inttostr(i),'Name',edtname.text); ini.WriteString('Benutzer'+inttostr(i),'Vorname',edtvorname.text); ini.WriteString('Benutzer'+inttostr(i),'Spielname',edtspielname.text); finally ini.free; end; benutzer.visible := false; hauptmenue.visible := true; end; | |
Beachte meinen Kommentar. ^^
Ich hab´s auch ein bisschen besser eingerückt...
mhxcm hat folgendes geschrieben: | | Ich brauche nun die zähler.ini gar nicht mehr.... aber wäre die nicht sowieso, nachdem die Schleife unterbrochen wird erst beschrieben worden??? Oder gibt es auch nen STOP befehl, der dann wirklich die komplette Schleife Stopt und mit den folgenden Befehlen weiterarbeitet? |
Nä! Die wurde ständig neu beschrieben. Ist zwar kein Fehler, aber eben nicht notwendig.
Aber wenn du die Datei sowieso nicht mehr brauchst, ist ja alles in Butter! =)
Moderiert von Narses: Quote-Tag repariert
|
|
mhxcm 
      
Beiträge: 54
|
Verfasst: Di 19.02.08 12:34
ok, hab dann das ">" durch ein "=" ersetzt... eingerückt hätte ich noch  ! Also ruft "break" einen Abbruch der Schleife hervor und der Rest der Befehle wird durchgeführt?
Edit: Aber wenn ich da en " = " hab, läuft er mir auf einen Fehler!!! 
_________________ 1100101 heißt ich Liebe dich ich möchte bei dir sein! (search Song:"Das Modul - 1100101")
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Di 19.02.08 14:36
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); var Ini:TIniFile; begin inc(i); ini := TiniFile.Create(ExtractFilePath(Paramstr(0))+'stress.ini'); if i > 5 then MessageBox(0,'Die höchstzulässige Anzahl an Benutzern wurde erreicht! Bitte löschen Sie einen Benutzer zuerst, um ein neues Profil anzulegen!!! MFG','fehler',ID_OK); if i < 6 then begin if ini.SectionExists('Benutzer'+inttostr(i)) = false then begin try ini.WriteString('Benutzer'+inttostr(i),'Name',edtname.text); ini.WriteString('Benutzer'+inttostr(i),'Vorname',edtvorname.text); ini.WriteString('Benutzer'+inttostr(i),'Spielname',edtspielname.text); finally ini.free; end; end; end; end; |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
mhxcm 
      
Beiträge: 54
|
Verfasst: Di 19.02.08 15:34
Thanks 
_________________ 1100101 heißt ich Liebe dich ich möchte bei dir sein! (search Song:"Das Modul - 1100101")
|
|
|