Autor Beitrag
[WOL]Azrael
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Di 03.08.04 13:52 
moin,
ich hab folgendes Problem:
Ich möchte beim Start des Programms, also im FormCreate Ereignis eine Prüfung durchführen ob bestimmte obligatorische Dateien vorhanden sind. Falls sie es nicht sind soll sich das Programm mit einer Fehlermeldung beenden. Das Funktioniert allerdings überhaupt nicht, denn entweder gibts eine Delphifehlermeldung und das Spiel startet tortzdem oder (wenns ein wenig umgeschrieeben wurde) wird zwar das Spiel nicht gestartet, allerdings liegts noch im Speicher. Ich hoffe ihr könnt mir da helfen, da ich das Programm nä. Montag abgegeben muss und mein betreuender Dozent sich einen schönen Urlaub gönnt und mir nicht antwortet. :(


ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
procedure THauptformular.FormCreate(Sender: TObject);
var Dateiname:string;Action:TAction;
begin

  If not(AllesVorhanden(Dateiname)) then
   begin
    showmessage('Die Datei '+Dateiname+' ist nicht vorhanden!. Das Spiel wird beendet.');
    EndeFlagge:=True;
    close;
   end;
 ...



procedure THauptformular.FormClose(Sender: TObject; var Action: TCloseAction);
begin

(* EndeFlagge ist gesetzt, wenn ein Fataler Error aufgetreten ist *)
 IF (EndeFlagge) or
    (messageDlg('Wollen sie das Programm wirklich schon beenden?',mtConfirmation,mbOkCancel,6)=1) then
   begin
   try
     If Mp1<>NIL then
      Mp1.free;           //Freigeben der Mediaspieler / der Bilder / der dyn. KI Liste
     If Mp2<>NIL then     //Hier tritt dann ein Fehler auf, wohl weil die                       //Mediaplayer noch nicht erstellt wurden.
       Mp2.free;

     BilderFreigeben(Bilder,Kugel,Spieler);
     Listenabbau;    
  except
  end;
 end
 else
    Action:=caNone;    //auf Benutzerwunsch wird ansonsten keine Aktion ausgeführt -                         es sei denn EndeFlagge ist gesetzt
end;



Moderiert von user profile iconPeter Lustig: Delphi-Tags hinzugefügt.
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 03.08.04 16:49 
Der Start eines Programmes entspricht nicht dem OnCreate Ereignis der Hauptform.

Geh mal in den Projektquelltext (unter D7: Projekt - Quelltext anzeigen).
Der sieht bei einem gänzlich neuen Programm so aus:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Nun fügst du ein paar If Blöcke ein, mitdenen kontrolliert wird, ob bestimmte Dateien existieren. Denke daran, die Units SysUtils und Dialogs einzubinden!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
program Project1;

uses
  Forms, 
  Dialogs, // Für die Message
  SysUtils, // Für FileExists
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  If (not FileExists('C:\lalala.test')) or
     (not FileExists('C:\Uftata.test')) or
     (not FileExists('C:\Mucke.test')) then  // Wenn bestimmte Dateien fehlen
     begin
      ShowMessage('So geht das nicht hier!'); // Message zeigen
      Application.Terminate;                  // Anwendung beenden
     end;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Schon wird deine Anwendung gar nicht erst initialisiert, wenn die Dateien fehlen.
[WOL]Azrael Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Di 03.08.04 18:21 
ja klar - stimmt, das ist ja das eigentliche Hauptprogramm (geht übrigens auhc mit F7 aufzurufen). Hatte ich voll vergessen :oops:
DANKE!!