Autor Beitrag
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 29.12.05 16:11 
Hallo,

ich habe ein Problem!
Ich will den Inhalt einer Textdatei in eine Listbox laden. So weit so gut, mit "opensavedialog1.execute" funktioniert das auch recht problemlos, doch wollte ich "automatisch" laden lassen. Allerdings melded sich dabei immer eine Exception (im anhang zu sehen) beim Starten!

Mein Quellcode Sieht wie folgt aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.FormCreate(Sender: TObject);
var f: textfile;
begin
  if fileexists('d:\Highscore.txt') then
    highscore.ListBox1.Items.LoadFromFile('d:\Highscore.txt') //<= an dieser Stelle tritt                  die exception auf!
  else begin
    assignfile(f, 'd:\Highscore.txt');
    rewrite(f);
    closefile(f);
  end;
end;


Ich verfüge über Administratorenrechte - immerhin kann ich die Datei auch so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  highscore.ListBox1.Items.SaveToFile('d:\Highscore.txt');
end;
speichern.

Ich habe bereits getestet, ob es funktioniert, wenn die Datei leer bzw nicht leer ist - ohne Erfolg.
Bei einem Freund klappt dies allerindgs problemlos!


edit bei "highscore" handelt es sich um eine form die ich umbenannt habe!


Moderiert von user profile iconGausi: Topic aus Programmierwerkzeuge verschoben am Do 29.12.2005 um 16:30
Einloggen, um Attachments anzusehen!
Jailbird
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 127

Windows XP Pro SP2
Delphi 7 Professional
BeitragVerfasst: Do 29.12.05 16:16 
Ich behaupte, dass das Form highscore noch nicht erstellt ist im FormCreate. Meiner Meinung nach würde es Sinn machen, diesen Lade-Code im OnCreate des Forms highscore zu machen. Ansonsten musst du highscore halt erst selber createn
Marc. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 29.12.05 16:24 
vllt mach ich ja was grundlegendes falsch..

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 {...}
begin
 highscore.Create(form1);  // oder highscore.create(highscore)? - es klappt beides nicht!
 if fileexists('d:\Highscore.txt') then begin
 highscore.ListBox1.Items.LoadFromFile('d:\Highscore.txt')
 {...}



so gehts auch net..


//edit ... ja das macht sinn :oops:

Klappt nun problemlos! ;) danke!

aber ginge es nicht auch irgendwie , wenn ichs direkt mit form1.create laden würde?
Jailbird
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 127

Windows XP Pro SP2
Delphi 7 Professional
BeitragVerfasst: Do 29.12.05 16:43 
Sicher geht das auch
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
uses highscore;
{...}
begin
  Application.CreateForm(Thighscore, highscore); // hier gegebenenfalls Thighscore auf TForm2 anpassen
  if fileexists('d:\Highscore.txt') then begin
  highscore.ListBox1.Items.LoadFromFile('d:\Highscore.txt')
{...}


Dann wird's schlussendlich von Application abgeräumt. Oder aber
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
uses highscore;
{...}
var
  highscore: Thighscore; // ggf Thighscore auf TForm2 ändern
{...}
begin
  highscore := Thighscore.Create(form1);  // als Parent kannste auch Application.MainForm, nil, etc angeben. ggf. Thighscore auf TForm2 anpassen
  if fileexists('d:\Highscore.txt') then begin
  highscore.ListBox1.Items.LoadFromFile('d:\Highscore.txt')
{...}


In diesem Fall musst du z.B. beim FormDestroy noch
ausblenden Delphi-Quelltext
1:
highscore.Free;					

aufrufen.

PS: Code ungetestet
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 31.12.05 12:10 
Schreib den Source in OnActive oder in OnShow.
Ist dann fast wie in OnCreate, nur wurden alle Objekte schon erstellt.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)