Entwickler-Ecke
Sonstiges (Delphi) - MDIChild verursacht Absturz beim schliessen
z.1! - Do 26.09.02 01:52
Titel: MDIChild verursacht Absturz beim schliessen
Hi,
irgendwie kriege ich das folgende Problem nicht unter Kontrolle.
Habe einen fsMDIForm, aus der weitere fsMDIChilder geöffnet werden. Zum erzeugen benutze ich folgenden Code auf meine Hauptform
Quelltext
1: 2: 3: 4: 5:
| procedure openmychild; Var mychildform: TMyChild; //Muss das auch in der TMyChildUnit stehen? begin mychildform := TMyChild.Create(Application); end; |
TMyChild wird mehrmals erzeugt und hat den folgende OnCloseEvent
Quelltext
1: 2: 3: 4:
| procedure TMyChild.onClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; |
Auf TMyChild ist eine Timerkomponente und eine Http komponente, es werden in regelmäßigen, durch die Timerkomponente ausgelösten Abständen, Daten aus dem Internet mittels nmHttp heruntergeladen und ausgewertet.
Beim Schlieseen des TMyChild stürtzt das Programm ab. Mal steht da 'Not enough Timers available', selbst wenn nur ein MDIChild also auch nur eine Timerkomponente erzuegt und benutzt wird. Mal bleibt alles hängen. Mal bekomme ich Access Violation at ..... was muss ich beim schliessen eines mdichilds? Wenn ich mein Hauptfenster schliesse, kommt es schonmal vor daß zwar die Hauptform und alle mdichildren verschwinden, mein programm aber immer noch im taskmanager eingetragen ist. bin wirklich verzweifelt auf der suche nach der lösung.
:(
Tino - Do 26.09.02 08:10
Hallo,
postet doch mal die Code Abschnitte die im OnCreate und OnDestory des fdMDIForm stecken.
Gruß
TINO
z.1! - Do 26.09.02 11:23
| Tino hat folgendes geschrieben: |
Hallo,
postet doch mal die Code Abschnitte die im OnCreate und OnDestory des fdMDIForm stecken.
Gruß
TINO |
hallo,
ok , also bei dem MDICHild sieht es im OnCreate so aus:
Quelltext
1: 2: 3: 4: 5: 6:
| procedure Tlsdlistchild.onCreate(Sender: TObject); begin lsdurl.text:=urlcont; lsdanz.text:=inttostr(anzcont); lsdname.text:=listcont; end; |
also nix besonderes es werden lediglich einige TEDit Felder beschrieben.
so sieht der OnClose Teil aus
Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure Tlsdlistchild.onClose(Sender: TObject; var Action: TCloseAction); begin if listtimer.enabled then listtimer.enabled:=false; if IsFileInUse(lsdname.text) then CloseFile(lsddata); if http.connected then http.abort; Action:= caFree; end; |
Die Funktion IsFileInUse(Tfile) habe ich von swissdelphicenter.ch
hmm , OnDestroy habe ich nicht.... sollte ich?
danke
LCS - Do 26.09.02 11:32
Hi
an deinen Codeausschnitten kann ich bisher auch nix auffälliges erkennen. Deswegen bitte nochmal genau lesen:
| Tino hat folgendes geschrieben: |
postet doch mal die Code Abschnitte die im OnCreate und OnDestory des fdMDIForm stecken.
|
Gruss Lothar
z.1! - Do 26.09.02 13:01
hmm , da steht nix :roll:
da auf meine fdMDIform nur ein paar knöpfe sind um die fdMDIChild Forms zu erzeugen, dachte ich müßte da ja auch nix stehen.
der absturz entseht ja auch nicht wenn ich meine fdMDIform sondern wenn ich ein fdMDIChild schliesse.
die hauptschleife in den fdMDIChild sieht übrigens in etwas so aus
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Procedure mainprocedure; begin http.get(url); assignfile...rewrite...write...close.... mystringlist.LoadFromFile(dest); parsefile(dest);//unproblemtische stringoperationen werden ausgeführt
if assigned( mystringlist) then mystringlist.free; end; |
thnx
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!