AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Was ist falsch am Aufruf und Freigaben von Create
Thema durchsuchen
Ansicht
Themen-Optionen

Was ist falsch am Aufruf und Freigaben von Create

Ein Thema von NoName1 · begonnen am 4. Feb 2020 · letzter Beitrag vom 6. Feb 2020
 
NoName1

Registriert seit: 8. Mär 2018
198 Beiträge
 
Delphi 12 Athens
 
#1

Was ist falsch am Aufruf und Freigaben von Create

  Alt 4. Feb 2020, 19:35
Delphi-Version: 10.2 Tokyo
Guten Tag Entwickler,
ich bin angefangen mich mit Modulen zu beschäftigen.
Im Programm habe ich für die Hilfe zu den einzelnen Formularen, es sind 27 Formulare, ein Modul "ModulHilfe" erstellt.
Weil das Modul in jedem Formular benötigt wird, lasse ich es automatisch beim Programmstart mit erzeugen:
Delphi-Quellcode:
ModulHilfe in 'DatenModule\ModulHilfe.pas{MoHilfe: TDataModule};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TdtmdMain, dtmdMain);
  Application.CreateForm(TMoEMail, MoEMail);
  ... und noch Anderes
  
   Application.Run;
end.
Im Modul TMOHilfe steht folgendes im public

Delphi-Quellcode:
public
    { Public-Deklarationen }
    constructor Create;
    procedure Hilfe(aNutzerID: Int64; aPrgTeil, aHauptSeite, aUnterseite: SmallInt);
  end;
und im Create-Ereignis folgendes:
Delphi-Quellcode:
constructor TMoHilfe.Create;
begin
  GlobalPfad := TAppConstants.GetGlobalPath;
  PfadHandBuch := TAppConstants.GetHandBuchPfad;
end;

In den Formularen wird die Hilfe in der Unit-Klausel so angegeben:
Delphi-Quellcode:
implementation
uses
  DatenModulMain,
  ModulSonstigeDrucke,
  ModulHilfe,
 ....

und im OnCreate-Ereignis des Formulares so erzeugt:
MoHilfe.Create;
Im Destroy-Ereignis wird es so freigegeben:
MoHilfe.Free;

Die Hilfe wird dann im Formular so aufgerufen:
MoHilfe.Hilfe(NutzerID, 17, 0, 0);
Das Problem ist nun folgendes:
Beim ersten Aufruf des Formulares kann ich die Hilfe aufrufen.
Wenn ich aber das Formular schliesse und danach erneut aufrufe, wird sofort eine
Zugriffsverletzung bei Adresse 0100D47D in Modul 'Loge.exe'. Schreiben von Adresse 000000A0.
geworfen.

Wenn ich aber das "MoHilfe.Free" im Formular nicht setze, dann kann ich das Formular ohne Absturz
immer wieder aufrufen.

Was mache ich falsch? Wo liegt mein Gedankenfehler?

Sollte diese Frage hier nicht in die Kategorie passen, so bitte ich den Admin sie in die richtige zu verschieben.

Vielen Dank im Voraus für Eure evtl. Hilfe.
  Mit Zitat antworten Zitat
 


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 14:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz