Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Combobox (https://www.delphipraxis.net/87288-problem-mit-combobox.html)

LDericher 26. Feb 2007 15:01


Problem mit Combobox
 
Ich habe mein eigenes Spiel als Konsolenanwendung geschrieben und es ist erhältlich unter www.dreamofreality.de.ki und habe ein neues Projekt, jetzt als normales Programm.
Leider gibt es auch hier einige Probleme:
Delphi-Quellcode:
begin
K:=1;
while(K<=10)do
     begin
     if fileexists(dir+'\DATA\save\'+inttostr(K)+'.sav')
       then
           begin
           {}
           assignfile(figdat, dir+'\DATA\save\'+inttostr(K)+'.sav');
           reset(figdat);
           read(figdat, FIG);
           closefile(figdat);
           {}
           Laden1.Chara.Items.Add(FIG.PER.NI+', Level '+inttostr(FIG.DAT.LVL));
           end;
     K:=K+1;
     end;
     end;
end;
Dieser Code soll die einzelnen Savegames in eine ComboBox eintragen (Laden1.Chara) und funktioniert leider nur einwandfrei, wenn vorher ein neues Savegame angelegt wurde. Ich verstehe das beim besten Willen nicht. :gruebel:

uwewo 26. Feb 2007 19:13

Re: Problem mit Combobox
 
Hi Superwinger,

hier mal ein kleiner Codeschnipsel um die ComboBox zu füllen

Delphi-Quellcode:

begin
ComboBox.Items.Clear;//Alle Einträge entfernen
 { alle Dateien mit Endung SAV suchen }
  if FindFirst(dir+'\DATA\save\'+'*.sav', $23, Search)= 0 then
    repeat
      ComboBox.Items.Add(Search.Name);
    until FindNext(Search) <> 0;
end;
Uwe

LDericher 26. Feb 2007 20:22

Re: Problem mit Combobox
 
Ich brauche ja etwas, das erst die Daten aus einem Save in einen (richtig deklarierten) Record liest, dann den Nickname und das Charakterlevel als String in die Combobox einfügt und zur nächsten Datei springt.

Mein Record:
Delphi-Quellcode:
type t_figur=record
             PER:record{Persönliche Daten}
                 NI:string[20];
                 GES:string[1];
                 AVA:integer;
                 end;
             DAT:record{Figurendaten(Zahlen)}
                 AHP, MAXHP:integer;
                 AMP, MAXMP:integer;
                 POI{NTS}:integer;
                 EXP{ERIENCE}:integer;
                 LVL:integer;
                 ATT{ACKE}:integer;
                 QUE{STS ABGESCHLOSSEN}:integer;
                 end;
             INV:record{Inventar}
                 HPOK, HPOG:integer;
                 MPOK, MPOG:integer;
                 HPO, MPO:integer;
                 end;
             WAF:record{Waffen}
                 end;
             SPE:record{Sprüche}
                 end;
             LOC:record{Position}
                 X, Y:integer;
                 end;
             FIG:record
                 AVA:boolean;
                 COL:integer;
                 end;
             end;
Die Deklarationen:
Delphi-Quellcode:
  dir:string;
  FIG:t_figur;
     figdat:file of t_figur;
  anz:integer;//Anzahl vorhandener Saves
  I:integer;//Nächstes freies Save
Hier nochmal meine Prozedur beim Klick auf LADEN:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var K:integer;
begin
Laden1.Chara.Items.Clear;
Image1.Visible:=false;
Image2.Visible:=true;
Button1.Visible:=false;
Button2.Visible:=false;
Button3.Visible:=false;
Button4.Visible:=false;
Label1.Visible:=false;
Laden1.Visible:=true;
K:=1;
while(K<=10)do
     begin
     if fileexists(dir+'\DATA\save\'+inttostr(K)+'.sav')
       then
           begin
           {}
           assignfile(figdat, dir+'\DATA\save\'+inttostr(K)+'.sav');
           reset(figdat);
           read(figdat, FIG);
           closefile(figdat);
           {}
           Laden1.Chara.Items.Add(FIG.PER.NI+', Level '+inttostr(FIG.DAT.LVL));
           end;
     K:=K+1;
     end;
end;

LDericher 26. Feb 2007 20:40

Re: Problem mit Combobox
 
Nach Testen des Codes oben

Delphi-Quellcode:
begin
ComboBox.Items.Clear;//Alle Einträge entfernen
{ alle Dateien mit Endung SAV suchen } 
  if FindFirst(dir+'\DATA\save\'+'*.sav', $23, Search)= 0 then
    repeat
      ComboBox.Items.Add(Search.Name);
    until FindNext(Search) <> 0;
end;
habe ich NUR nach Anlegen eines neuen Savegames (also wie gehabt) ein befriedigendes Ergebnis erhalten...???:
:kotz:

uwewo 26. Feb 2007 20:50

Re: Problem mit Combobox
 
Ok, dann nochmal anders

Delphi-Quellcode:
begin
ComboBox.Items.Clear;//Alle Einträge entfernen

K:=0;
{ alle Dateien mit Endung SAV suchen } 
  if FindFirst(dir+'\DATA\save\'+'*.sav', $23, Search)= 0 then
    repeat
      ComboBox.Items.Add(Search.Name);
       {$I-}
           assignfile(figdat, dir+'\DATA\save\'+Search.Name);
           reset(figdat);
           read(figdat, FIG);
           Laden1.Chara.Items.Add(FIG.PER.NI+', Level '+inttostr(FIG.DAT.LVL));
           closefile(figdat);
       {$I+} 
           inc(k);
    until (K >= 10) or (FindNext(Search) <> 0);
end;
ich kann ohne kompletten Code, das auch nicht besser :( , oder ich verstehe alles falsch :?

Uwe

LDericher 27. Feb 2007 11:23

Re: Problem mit Combobox
 
Alles klar: Bin selbst auf die Antwort gekommen, war einfacher als ich dachte:

Das Problem war nur, dass ich das getdir an der falschen Stelle hatte...
Hmpf... :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz