AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung wird nicht geschlossen...

Ein Thema von bimsi · begonnen am 17. Sep 2004 · letzter Beitrag vom 17. Sep 2004
Antwort Antwort
bimsi

Registriert seit: 17. Sep 2004
5 Beiträge
 
#1

Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 16:28
Hallo,

ich habe ein kleines Problem und zwar wird meine Anwendung trotz Aufruf von Close im MainFormular nicht geschlossen:

Delphi-Quellcode:
  try
    IniFileOeffnen(ExtractFilePath(Application.ExeName));
  except
  ShowMessage('Fehler beim Öffnen/Erstellen der ' + CIniName + '!'
                  + ' Bitte überprüfen Sie das Medium. Programm wird beendet');
  Close;
  end;
Der Code-Block befindet sich in der Prozedur onFormCreate.
Ich weiss leider nicht, wie ich dieses Problem umgehen/lösen kann.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 16:31
Herzlich willkommen in der DP!

Da dein Formular in OnCreate erst erstellt wird, kannst du es dort noch nicht beenden, mache das entweder im OnActivate oder OnShow. Dann müsste es klappen.

On Activate wird allerdings, glaube ich, jedesmal ausgeführt, wenn das fenster den Fokus bekommen (falls es ihn zwischendurch "verlor").
Dann kannst du ja eine Boolsche Variable benutzen um zu überprüfen, ob der Code schon ausgeführt wurde.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 16:32
Hi bimsi,

erstmal herzlich willkommen in der DP
[OT]
Das sag ich in letzter Zeit oft
[/OT]

Du kannst im OnCreate ein Formular nicht schließen. Du könntest es aber mit einem Timer lösen:
Timer aufs Form, Interval auf 500, Enabled auf False.
Im OnTimer-Event des Timers den Close-Aufruf.
Und im OnCreate schreibst du anstatt des Close-Aufrufs "Timer1.Enabled := True"
Das Form blinkt zwar kurz auf, aber das ist besser als wenn es sich nicht schließt

Greetz
alcaeus

[add]Und schon wieder war Matze schneller [/add]
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 16:34
Wie wäre es mit Halt, Aplication.Terminate oder Fail im Kontruktor?
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 16:38
@bimsi: Wie meine vorposter schon geschrieben haben, kannst du im OnCreate Ereignis kein Close benutzen.
Alternative wäre Close durch Application.Terminate zu ersetzen. Besser wäre aber im OnActivate Ereignis ein Close aufzurufen.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
    FirstRun: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{--------------------------------------------------------------------------------------------------}

procedure TForm1.FormCreate(Sender: TObject);
begin

  FirstRun := True;

end;

{--------------------------------------------------------------------------------------------------}

procedure TForm1.FormActivate(Sender: TObject);
begin

  if not FirstRun then
    Exit;

  FirstRun := False;

  try
    // Hier INI Datei prüfen
  except
    ShowMessage('Fehler');
    Close;
  end;

end;

{--------------------------------------------------------------------------------------------------}

end.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
bimsi

Registriert seit: 17. Sep 2004
5 Beiträge
 
#6

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 16:46
Danke euch. Ich habs mit onShow gelößt.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 17:11
Moin!

@NicoDE: Fail ist sehr gefährlich um damit einen Constructor zu beenden. Es wird in der Hilfe von der Nutzung abgeraten und ich selber habe damit arge Probleme gehabt, weil Fail den Speicher vollkommen zerschiesst und z.T. nichtmal richtig zurückspringt. Wenn in einem Constructor etwas schief geht und diese abgebrochen werden soll, dann immer per Exception.

MfG
Muetze1
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Anwendung wird nicht geschlossen...

  Alt 17. Sep 2004, 17:42
Moin bimsi,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Wie wäre es denn, wenn Du die Prüfung vor der Erzeugung des Hauptformulares in der Projektdatei einbaust.
Schliesslich soll das Programm im Falle eines Fehlers ja gar nicht erst starten können.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz