![]() |
Problem mit Combobox
Ich habe mein eigenes Spiel als Konsolenanwendung geschrieben und es ist erhältlich unter
![]() Leider gibt es auch hier einige Probleme:
Delphi-Quellcode:
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:
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; |
Re: Problem mit Combobox
Hi Superwinger,
hier mal ein kleiner Codeschnipsel um die ComboBox zu füllen
Delphi-Quellcode:
Uwebegin 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; |
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:
Die Deklarationen:
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;
Delphi-Quellcode:
Hier nochmal meine Prozedur beim Klick auf LADEN:
dir:string;
FIG:t_figur; figdat:file of t_figur; anz:integer;//Anzahl vorhandener Saves I:integer;//Nächstes freies Save
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; |
Re: Problem mit Combobox
Nach Testen des Codes oben
Delphi-Quellcode:
habe ich NUR nach Anlegen eines neuen Savegames (also wie gehabt) ein befriedigendes Ergebnis erhalten...???:
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; :kotz: |
Re: Problem mit Combobox
Ok, dann nochmal anders
Delphi-Quellcode:
ich kann ohne kompletten Code, das auch nicht besser :( , oder ich verstehe alles falsch :?
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; Uwe |
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