AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi zugriffsverletzung bei aufruf von destroy
Thema durchsuchen
Ansicht
Themen-Optionen

zugriffsverletzung bei aufruf von destroy

Ein Thema von sancho1980 · begonnen am 21. Mai 2006 · letzter Beitrag vom 22. Mai 2006
Antwort Antwort
Seite 2 von 2     12   
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#11

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 11:45
danke
wo steht denn das alles?
allerdingst geht es immer noch nicht...hab nämlich vergessen zu erwähnen, dass owner gar kein tform ist, sonder ein tdatamodule
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 12:39
Wenn ein Datenmodul Owner der ChildForms ist, dann geht das hier:

Delphi-Quellcode:
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  with Owner as TDataModule do
    if Tag = 0 then
    begin
      Tag := 1;
      Free;
    end else Action := caFree;
end;
marabu
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#13

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 13:19
Zitat von marabu:
Wenn ein Datenmodul Owner der ChildForms ist, dann geht das hier:
hat's leider auch nicht gebracht
aber ich habe mal das Projekt hochgeladen.
die anwendung geht eigentlich nur, wenn man firebird 1.5 installiert hat, aber ich hab mal den entsprechenden code zum öffnen der datenbank weggemacht..also einfach mal auf datei-öffnen-wörterbuch gehen und dann die beigefügte empty.fdb öffnen..darauf öffnen sich 2 formulare..wenn ihr eins der beiden formulare schließt, kommt die meldung von der ich rede...vllt weiß ja einer von euch weiter...
gruß und danke,
martin
Angehängte Dateien
Dateityp: rar 2006_416.rar (610,9 KB, 5x aufgerufen)
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 13:32
Was heißt geht nicht? Kannst du es nicht kompilieren? Gibt es einen Laufzeitfehler?
Wo in deinem Projekt steckt der Code, der ein Datenmodul zum Owner einer Form macht?

marabu
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#15

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 13:35
doch kompilieren und ausführen geht
aber mach doch mal genau das was ich vorhin meinte:

starte das programm und klick auf

datei->öffnen->wörterbuch (die paar meldungen die da kommen, einfach ignorieren)

dann sollten sich bei dir 2 mdi-childs öffnen

und jetzt schließe mal eins der beiden fenster!
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#16

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 13:43
Martin, das geht nicht. Dein Projekt kann ich auf meiner Maschine nicht kompilieren, da du Units einbindest, die bei mir nicht existieren.

Aber unabhängig davon - beim klick auf Wörterbuch soll ein Datenmodul erzeugt werden. Dieses Datenmodul hat keinen event handler für OnCreate() und deshalb können auch keine 2 ChildForms entstehen - oder?

Hast du dein eigenes Demo-Projekt mal in einem eigenen Verzeichnis entpackt und kompiliert?

marabu
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#17

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 14:14
jetz merk ich grad
das kann ja bei euch gar nicht funzen, da war ein dateiverweis falsch
jetz nochmal
also bitte nochmal:

datei->öffnen->wörterbuch (die paar meldungen die da kommen, einfach ignorieren)

dann sollten sich bei dir 2 mdi-childs öffnen

und jetzt schließe mal eins der beiden fenster!

sorry deswegen nochmal

gruß


martin
Angehängte Dateien
Dateityp: rar 2006_201.rar (621,3 KB, 3x aufgerufen)
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 15:09
Hallo Martin,

so geht es jetzt:

Delphi-Quellcode:
procedure TLitForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  with Owner as TDataModule do
  begin
    RemoveComponent(self);
    Free;
  end;
  Action := caFree;
end;
marabu
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#19

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 15:56
ah, jetzt klappt das...
darf ich mal fragen wie du drauf gekommen bist?

außerdem wundert mich folgendes: wenn ich die komponente noch erst selbst aus der komponentenliste entfernen muss, warum muss ich dann nicht vorher auch noch alle anderen komponenten aus der liste entfernen, sondern nur das formular, bei dem onclose aufgerufen wurde?

hab mal ein bisschen rumgespielt und das

RemoveComponent(self); von dir entfernt und dafür einen ondestroy-handler für das datenmodul reingeschrieben, das folgendes macht:

Delphi-Quellcode:
procedure TDataModule1.DataModuleDestroy(Sender: TObject);
begin
  while (self.ComponentCount > 0) do
    begin
      self.RemoveComponent(self.Components[0]);
    end;
end;
verhält sich aber sehr eigenartig, weil da nur das aufrufende formular, nicht aber das andere geschlossen wird...

[edit]ach ich verstehe: beim aufruf von free für den owner wird automatisch close() für alle anderen formulare ausgeführt, was diese komponenten auch wieder verschwinden lässt, oder?..trotzdem meine frage aus zeile 2 (s.o. in diesem post): darf ich mal fragen wie du drauf gekommen bist?[/edit]
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: zugriffsverletzung bei aufruf von destroy

  Alt 22. Mai 2006, 16:32
Lieber Martin,

ich programmiere seit etwa 30 Jahren. Ich komme nicht auf etwas - ich erinnere mich nur. Manchmal besser, manchmal schlechter. In letzter Zeit immer schlechter.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:23 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