Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 27.06.05 08:39 
Hallo, mein Programm lief in Ordnung bis ich eine LoginForm als StartFenster gemacht habe!

Bekamm lauter Zugriffsverletzungen! Jetzt nicht mehr aber das Programm hängt!
Das Problem ist ich kann's nicht mit dem Debugger testen warum es hängen bleibt!
Also ich habe ein Haltepunkt in der OnClose procedure gesetzt aber der kommt erst
gar nicht bis dahin!

Ich hatte vorher in LoginForm
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Hide
Application.CreateForm(TForm1, Form1); 
Form1.ShowModal;
Application.Terminate;


jetzt habe ich Application.Terminate in der OnClose procedure vom eigentlichen Programm!

Muß ich explicit irgendwo setzen welches das Hauptformular ist? Welches würde als Hauptformular zählen?
Was ist der Unterschied zwischen Application.CreateForm(TForm1, Form1) und Form1 := TForm1.Create(Self);
Wie kann ich zum DebugModus wechseln wenn das Programm läuft?

// EDIT
Das Problem hat sich scheint so selbst gelöst! Also ich verstehe nicht Delphi! Java hat mir nie Problemme
bereitet! Aber ich würde doch gern Antworten auf die oben stehenden Fragen haben!
emteg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 30.06.05 14:04 
Wenn du zugriffsverletzungen oder plötzlich hängende programme hast, liegt das - besoners beim öffnen/schließen/anzeigen/verstecken/etc von forms - meißt daran, dass dein programm auf etwas zugreifen will, das es schon nicht mehr gibt.

Du musst dir deinen code genau durchschauen und überlegen, wann welches objekt gelöscht wird und wann auf eines zugegriffen wird.

Mach dir mal dein ganzes programm, auf jedenfall aber form.create events mit break points voll und schau, wann sich dein programm aufhängt.

Gut, jetzt läufts ja, aber versuchs beim nächsten mal halt so :D

PS: nicht jeder satz ist ein ausruf! Der vorige ist einer, dieser hier aber nicht (punkt=>).
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 30.06.05 14:25 
Titel: Re: LoginForm als Startfenster! Programm hängt beim Schließe
user profile iconJRegier hat folgendes geschrieben:
Muß ich explicit irgendwo setzen welches das Hauptformular ist?

Nein, das als erstes mit Application.FormCreate erzeugte ist das Hauptformular. Das kann man auch in den Projektoptionen (Menü Projekt -> Optionen) einstellen.

user profile iconJRegier hat folgendes geschrieben:
Was ist der Unterschied zwischen Application.CreateForm(TForm1, Form1) und Form1 := TForm1.Create(Self);

Das weiß ich jetzt nichtmal hundertprozentig, aber ich würde mal vermuten, dass mit Application.FormCreate die Anwendung bzw. das versteckte Application-Fenster der Besitzer des Fensters ist, und damit ist das erste Fenster, was Application besitzt, das Hauptfenster.
Mit Form1 := TForm1.Create(Self);, was du im Übrigen auch nicht direkt im Projektquelltext ausführen kannst (//edit: Ich meine das Self gibt es da nicht), wird Self zum Besitzer. Führst du das in dem Quelltext eines Formulars aus, also das entsprechende Formular.

user profile iconJRegier hat folgendes geschrieben:
Wie kann ich zum DebugModus wechseln wenn das Programm läuft?

Menü Start -> Unterbrechen oder so ähnlich, dieses Symbol mit den zwei senkrechten Balken.
(Nicht Zurücksetzen, das bricht das Programm ab.)


Zuletzt bearbeitet von jaenicke am Di 05.07.05 13:15, insgesamt 1-mal bearbeitet
direction4delphi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 84

WIN 95, WIN 98, WIN ME, WIN NT, WIN 2000, WIN XP, VISTA
D2 Prof, D4 Prof,D2005 Prof, Delphi4Php
BeitragVerfasst: Do 30.06.05 15:46 
Titel: Re: LoginForm als Startfenster! Programm hängt beim Schließe
user profile iconjaenicke hat folgendes geschrieben:
was du im Übrigen auch nicht direkt im Projektquelltext ausführen kannst, wird Self zum Besitzer. Führst du das in dem Quelltext eines Formulars aus, also das entsprechende Formular.



STIMMT SO NICHT GANZ
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  Form2  :  TForm2;
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Form2:=TForm2.Create(Application);
  Form2.ShowModal;
  Application.Run;


end.

mfg
MILLI
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 05.07.05 09:27 
Titel: Re: LoginForm als Startfenster! Programm hängt beim Schließe
user profile icondirection4delphi hat folgendes geschrieben:
user profile iconjaenicke hat folgendes geschrieben:
was du im Übrigen auch nicht direkt im Projektquelltext ausführen kannst, wird Self zum Besitzer. Führst du das in dem Quelltext eines Formulars aus, also das entsprechende Formular.


STIMMT SO NICHT GANZ
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  Form2  :  TForm2;
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Form2:=TForm2.Create(Application);
  Form2.ShowModal;
  Application.Run;
end.

WAS stimmt so nicht ganz? Meinst du das man TForm2.Create mit Application aufrufen kann? Das ist ja klar, es ging darum, dass es mit SELF nicht geht, weil es das im Projektquelltext selbst nicht gibt...
direction4delphi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 84

WIN 95, WIN 98, WIN ME, WIN NT, WIN 2000, WIN XP, VISTA
D2 Prof, D4 Prof,D2005 Prof, Delphi4Php
BeitragVerfasst: Di 05.07.05 10:38 
Titel: Re: LoginForm als Startfenster! Programm hängt beim Schließe
[quote="user profile iconjaenicke"]
user profile icondirection4delphi hat folgendes geschrieben:
user profile iconjaenicke hat folgendes geschrieben:

WAS stimmt so nicht ganz? Meinst du das man TForm2.Create mit Application aufrufen kann? Das ist ja klar, es ging darum, dass es mit SELF nicht geht, weil es das im Projektquelltext selbst nicht gibt...


Sorry das hatte ich anders verstanden dachte du meintest man kann ein Form.create nicht in der dpr datei aufrufen. Klar Self gibts hier nicht.

mfg
MILLI