Autor Beitrag
WormHole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 145



BeitragVerfasst: Di 25.07.06 14:30 
Hi,

ich bastel gerade an einem Programm für Verwaltung von Turnieren herum. In dem Programm kann man "Turniere","Teams" und "User" neu anlegen. Diese Funktionen sind auch schon alle vorhanden und funktionieren auch.
Das Problem kommt auf der Form, wo die Daten ausgelesen werden sollen:

In einer Combobox werden die verschiedenen Turniere ausgelesen.
ausblenden Delphi-Quelltext
1:
2:
// Dropdownlist mit Informationen füllen
    ini.ReadSection('Turniere', Turniere_Combobox.Items);


Sobald man dort ein Turnier ausgewählt hat, werden ein paar Informationen zu diesem Turnier geladen. Ebenso werden dort die Teams in verschiedene Labels geladen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
teams_angemeldet := ini.ReadInteger(name,'Teams angemeldet',0);
    for i:=1 to teams_angemeldet do begin
      TLabel(FindComponent('Team'+inttostr(i))).Caption :=
          ini.ReadString(name,'Team'+inttostr(i),'');
    end;


(Das Teams_angemeldet wird bei jedem neu angelegten Team um eins erhöht)
Der Fehler hierbei ist, dass, wenn ich mehr als ein Turnier habe der Teams_angemeldet wert bleibt:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
[Turnier1]
Teams angemeldet = 2
Team1=blub
Team2=blab

[Turnier2]
Teams angemeldet = 3
Team3=blib


Sobald ich also mit der Combobox das Turnier2 ausgewählt habe, bekommen die ersten beiden Labels einen leeren String zurück und erst das dritte Label hat den Wert : blib.

Ich hoffe ihr habt meinen Text verstanden und könnt mir helfen.

Gruß
WormHole
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Di 25.07.06 14:40 
Iss ja logisch, weil du in der SChleife bei 1 anfängst zu zählen. Also wird auch ein nicht existentes Team1, sowie auch Team2 ausgelesen. Da sie nicht existeiren, kommt der Default- Value, nämlich ' ' rein.
Du musst einfach noch schaun, dass du in der for-Schleife bei der richtigen Zahl beginnst

_________________
Programmers never die, they just GOSUB without RETURN
WormHole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 145



BeitragVerfasst: Di 25.07.06 14:45 
Ja den Fehler habe ich ja selber auch schon gefunden...

Nur wie fange ich bei Turnier2 wieder bei 1 an? Und dann bei Turnier 1 wieder bei drei wenn ich noch ein Team adde?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 25.07.06 14:50 
du kannst den sektionen doch noch einen weiteren integerwert geben, in dem die zahl gespeichert wird, bei der begonnen werden soll..? alternativ kannst du mal readsection benutzen, dadruch bekommst du in einer TStringList (oder wars TStrings...?) alle Wert-namen angezeigt, die in der sektion sind. dann musst du nur noch nach Team suchen und die zahl dahinter nehmen...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
WormHole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 145



BeitragVerfasst: Di 25.07.06 14:55 
user profile iconJayEff hat folgendes geschrieben:
du kannst den sektionen doch noch einen weiteren integerwert geben, in dem die zahl gespeichert wird, bei der begonnen werden soll..?


Hmm, ich weiß nicht wie ich das umsetzen soll!
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 25.07.06 14:58 
user profile iconWormHole hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
teams_angemeldet := ini.ReadInteger(name,'Teams angemeldet',0);
    for i:=ini.ReadInteger(name, 'startcount', 1) to teams_angemeldet do begin
      TLabel(FindComponent('Team'+inttostr(i))).Caption :=
          ini.ReadString(name,'Team'+inttostr(i),'');
    end;


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
[Turnier1]
Teams angemeldet = 2
Team1=blub
Team2=blab
startcount=1
[Turnier2]
Teams angemeldet = 3
Team3=blib
startcount=3

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
WormHole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 145



BeitragVerfasst: Di 25.07.06 15:02 
Und wie speicher ich den Startcount?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 25.07.06 15:06 
ausblenden Delphi-Quelltext
1:
ini.WriteInteger(name, 'startcount', variable);					

Ich versteh nich ganz wo dein problem ist ^^ Kennst du dich mit dem inifile nicht aus, oder gibts einen grund, aus dem dein programm zu keinem zeitpunkt weis, welchen wert startcount haben muss?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
WormHole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 145



BeitragVerfasst: Di 25.07.06 15:11 
ja sry^^
Ich kam gerade mal net ganz klar^^
Naja ich habs jetzt... Danke...

EDIT: Ne, ich weiß net wo ich das hinschreiben soll^^ Ich hatte es kurz getestet da hats geklappt und jetzt fängt der bei meinem 2.ten Team an und schreibt nur das zweite team hin. Muss ich den Startcount manuel hinzufügen?
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Di 25.07.06 15:43 
Wenn du ein Turnier neu anlegst, ist der Startwert ja auf 0. Dann solltest du noch einen Wert für die maximale Anzahl an Teilnehmern festlegen, damit nicht zu viele Teams sich anmelden können. Wenn sich ein Team anmeldet erhöst du die Anzahl der angemeldeten Teams um 1, indem du dir den alten Wert holst und dann den Wert mit 1 addiert und wieder speicherst. Außerdem fügst du das Team hinzu. (alles nachdem du geprüft hast, ob das Team schon angemeldet ist). Wenn du dir nun alle Teilnehmer anzeigen lassen willst musst du von 1 bis zur Anzahl der angemeldeten Teams gehen. Vorher Prüfen, ob die Teilnehmerzahl 0 ist, sonst wird das mit der Schleife nichts. Du musst darauf achten, das die Sections nicht gleich heißen und auch drauf achten, das du in der richtigen Section bist, wenn du die Daten änderst. Da es schon an der Combobox zu scheitern scheint, könnte da vielleicht die Section nicht aktualisiert worden sein.

MfG
freak

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen