AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenmodul wird nicht erstellt

Ein Thema von Poelser · begonnen am 19. Mai 2017 · letzter Beitrag vom 19. Mai 2017
Antwort Antwort
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datenmodul wird nicht erstellt

  Alt 19. Mai 2017, 09:15
Moin,

ich habe hier ein merkwürdiges Verhalten beim Compilieren, für das ich zwar einen Workaround habe, aber der Sache trotzdem auf den Grund gehen möchte. In der *.dpr:
Delphi-Quellcode:
begin
  Application.Initialize;
{$IFDEF debug}
  ReportMemoryLeaksOnShutdown := True;
{$ENDIF}
  Application.MainFormOnTaskbar := True;
  Application.Title := 'xyz';
  TStyleManager.TrySetStyle('Aqua Light Slate');
  Application.CreateForm(TDM, DM);
  if TDialogLogin.login then Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
end.
Im Login-Dialog wird zur Anmeldung dann auf das Datenmodul zugegriffen:
Delphi-Quellcode:
  userid := TSQLTool.GetInteger(DM.conXYZ, 'user', 'iduser',
    'short=' + QuotedStr(EditKuerzel.Text) + ' AND ' +
    'BINARY password=' + QuotedStr(EditPassword.Text));
und das geht plötzlich schief, wenn der User die AnmeldeAction ausführt:

Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt mkueche.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x00cfd016: read of address 0x00000074' aufgetreten.

Das liegt jetzt daran, dass das Datenmodul (DM) NIL ist. Warum ist das plötzlich so? Die DPR und der Login sind seit Monaten so am laufen, und haben nie Zicken gemacht. Ich starte das Programm ja mehrmals täglich, und arbeite an der Programmlogik, die mit der Anmeldung überhaupt nix zu tun hat.

Mein Workaround besteht darin, das CreateForm für das Datenmodul in die Login-Unit zu verlagern:
Delphi-Quellcode:
Initialization

  if not assigned(DM) then Application.CreateForm(TDM, DM);

end.
Aber das kann's doch nicht sein, oder? Warum also wird in der DPR plötzlich das Datenmodul vom Delphi 10.2 prof. scheinbar beim Compilieren übersprungen? Vielleicht hat ja jemand 'ne Idee.

TIA, Poelser
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenmodul wird nicht erstellt

  Alt 19. Mai 2017, 09:19
Warum also wird in der DPR plötzlich das Datenmodul vom Delphi 10.2 prof. scheinbar beim Compilieren übersprungen? Vielleicht hat ja jemand 'ne Idee.
Hast du schon mal versucht mit F7 in die betreffende Zeile hineinzusteppen?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Datenmodul wird nicht erstellt

  Alt 19. Mai 2017, 09:31
Moin Uwe,

ja, ich kann mit F7 hineinsteppen. Und dort wird eine Instance mit dem Namen "DM" erstellt, also eigentlich alles gut.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Datenmodul wird nicht erstellt

  Alt 19. Mai 2017, 09:32
und was passiert anschließend nach dem Erstellen? d.h. zumindest einen Brakepoint in das OnDestroy des DM setzen und ggf. auch mal DM in die überwachten Variablen ziehen und dort ggf. die Option "Bei Änderungen anhalten" - vielleicht siehst Du dann wenn jemand daran unberechtigt rum schreibt...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#5

AW: Datenmodul wird nicht erstellt

  Alt 19. Mai 2017, 09:49
Ist denn auch sichergestellt, daß DM immer dieselbe Variable meint?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Datenmodul wird nicht erstellt [gelöst]

  Alt 19. Mai 2017, 10:33
Ist denn auch sichergestellt, daß DM immer dieselbe Variable meint?
Treffer, versenkt! Ich hatte tatsächlich ein Formular erstellt, für das ich im Interface
Delphi-Quellcode:
var
  DM: TDialogMeal;
deklariert habe. Dort findet zwar kein direkter Zugriff auf das Datenmodul statt, und im Login auch nicht auf dieses Formular, aber die Objekte, die im Programm so benutzt werden, nutzen das Datenmodul...
Tja, mit DME: TDialogMeal; ist dann plötzlich alles OK.

Vielen Dank für die Denkanstöße!

Poelser
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:34 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