AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zugriffsverletzung beim erstellen eines Datamoduls
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung beim erstellen eines Datamoduls

Ein Thema von Delbor · begonnen am 30. Jan 2022 · letzter Beitrag vom 31. Jan 2022
Antwort Antwort
Seite 2 von 2     12   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Zugriffsverletzung beim erstellen eines Datamoduls

  Alt 30. Jan 2022, 23:40
Hallo,
das DM wird als erstes erzeugt?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Zugriffsverletzung beim erstellen eines Datamoduls

  Alt 30. Jan 2022, 23:47
Diese Events rufen die Forms/DatenModule selbst auf, denn genau dafür gibt es diese Events.

Wenn du sowas aufrfst würde alles doppelt/mehrfach gemacht, was nicht gut sein kann. (z.B. würde FReportList doppelt erstellt, aber nur einmal freigegeben)
Und wenn es vorher nicht von den Modulen aufgerufen wird, dann hast DU etwas falsch gemacht, wie z.B. vergessen es zu erstellen.

In deinem Fall würde ich dir dringend anraten auch mal sowas wie ReportMemoryLeaksOnShutdown auf True zu setzen.
$2B or not $2B

Geändert von himitsu (30. Jan 2022 um 23:50 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Zugriffsverletzung beim erstellen eines Datamoduls

  Alt 31. Jan 2022, 00:46
Hi zusammen

Hallo,
das DM wird als erstes erzeugt?
Nein, erst nach der Mainform, da es in den Projektoptionen bei den automatisch erstellten Formularen nach der Mainform aufgeführt ist. Euren Reaktionen entnehme ich, dass ein Datenmodul auch ohne Eintrag unter Projektoptionen/Formularen automatisch vor der Mainform erzeugt würde. Nur - ein solcher Eintrag sagt mir, ob und wie ich das Modul und enthaltene Objekte behandeln muss.

Diese Events rufen die Forms/DatenModule selbst auf, denn genau dafür gibt es diese Events.
Basisframes werden vor der Mainform erstellt. Forms werden aber keineswegs automatisch erstellt, es sei denn, dies wird in den Projektoptionen so festgelegt.* Dass Datenmodule auch ohne Eintrag in den PO automatisch erzeugt werden, habe ich bisher nicht gewusst.

Wenn du sowas aufrfst würde alles doppelt/mehrfach gemacht, was nicht gut sein kann. (z.B. würde FReportList doppelt erstellt, aber nur einmal freigegeben)
Und wenn es vorher nicht von den Modulen aufgerufen wird, dann hast DU etwas falsch gemacht, wie z.B. vergessen es zu erstellen.

In deinem Fall würde ich dir dringend anraten auch mal sowas wie ReportMemoryLeaksOnShutdown auf True zu setzen.
Grundsätzlich verwende ich ReportMemoryLeaksOnShutdown. Es sei denn, ich möchte in einem kleinen Testprogämmchen was testen - und wenn das kleine Testprogrämmchen dann grösser wird...

* Eine Ausnahme ist die erste Form eines Projektes; diese wird automatisch zur Mainform und ebensio automatisch erstellt.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

AW: Zugriffsverletzung beim erstellen eines Datamoduls

  Alt 31. Jan 2022, 01:11
Es wird nur das automatisch erstellt, was in den Projektoptionen eingestellt ist,
also genauer das, was in der .DPR via Application.CreateForm erstellt wird. (deswegen werden genau diese Codezeilen von den Projektoptionen generiert)

Aber egal, du kannst nichts verwenden, was es (noch) nicht gibt, sonst knallt es nunmal.
Ob es nun autmatisch erstellt wird, oder ob du es manuell erstellst, ist irrelevant ... es muß aber vor der Verwendung erstellt worden sein.
Und das Event an OnCreate, oder Dergleichen, ruft dann das DatenModul selbst auf, wenn es erstellt wird, nicht du. (wenn du es aufrufen mußt, damit irgendwas funktioniert, dann machst du definitiv etwas falsch)




PS: Auch globale Variablen (Zeiger auf Forms/Module), sind grundsätzlich "immer" erst nach Create/OnCreate gültig.
Einzige Ausnahmen sind die globale Variablen von automatisch erstellten Forms/Datenmodule, oder wenn man selbst mit NewInstance arbeitet und dann den Constructor anschließend selbst wie eine Przedur aufruft. (genau deswegen gibt es Application.FormCreate, damit während des Erstellens von Foms/Modulen andere Forms/Module und Code auf diese Variablen/Namen referenzieren/zugreifen können)
$2B or not $2B

Geändert von himitsu (31. Jan 2022 um 07:54 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Zugriffsverletzung beim erstellen eines Datamoduls

  Alt 31. Jan 2022, 06:09
Hallo,
hm, das DM wird also nach dem Hauptform erzeugt.

Hoffentlich wird dann nicht schon im FormCreate des Hauptforms
was mit dem DM gemacht, z.B. irgendwelche Config-Sachen...

Setz mal in der DPR 2 Breakpoints auf die beiden CreateForms-Zeilen ,
Heiko
  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 15:21 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