AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Schutzverletzung nach Programmende
Thema durchsuchen
Ansicht
Themen-Optionen

Schutzverletzung nach Programmende

Ein Thema von Walter Landwehr · begonnen am 2. Mär 2015 · letzter Beitrag vom 3. Mär 2015
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Schutzverletzung nach Programmende

  Alt 3. Mär 2015, 09:02
Ich sehe nur dass ich in einer "normalen" VCL-Anwendung keine Fehlermeldung bekomme, noch nicht einmal im Debugger. Wenn ich nun bspw. "FastMM4" als erstes in die uses der DPR nehme hält er dort an und wirft AVs.

Delphi-Quellcode:
program Project22;

uses
  //FastMM4,
  Vcl.Forms,
  Unit8 in 'Unit8.pas{Form8};

{$R *.res}

var
   intfRef:   IInterface;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm8, Form8);
  intfRef := Form8;
  Application.Run;
end.
Delphi-Quellcode:
unit Unit8;

[...]
type
  TForm8 = class(TForm, IInterface)

[...]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Schutzverletzung nach Programmende

  Alt 3. Mär 2015, 09:15
FastMM ist immer drin, denn das ist seit 2006 integriert.

Und globale Interface-Variablen, auf Interfaces ohne Referenzzählung, denen diese Instanzen egal sind ... wer wundert sich dort?

Wenn du FastMM4 einbindest, dann wird das eventuell freigegeben, bevor diese globale Projekt-Variable freigegeben wird,
während der Standard-Speichermanager in der System.pas liegt.

Und das ist ein Grund, warum ich endlich überall [Weak]-Referenzen haben will,
aber hier (globales intfRef) bist du selber Schuld.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Mär 2015 um 09:18 Uhr)
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Schutzverletzung nach Programmende

  Alt 3. Mär 2015, 09:46
Ich habe bei mir den Fehler gefunden. Und zwar setze ich auf mein Hauptformular die Komponente TAdvOfficeStatusBarOfficeStyler von TMS ein. Auf mein Datenmodul liegt die Komponente TAdvPanelStyler ebenfalls von TMS. Beide Komponenten auf ein Formular geht nicht. Wo kann man denn den TADVPanelStyler noch ablegen damit das Programm richtig ohne Meldung herunterfährt.

Die Einträge in meiner Projektdatei sehen so aus:

Delphi-Quellcode:
  Application.Initialize;
  Application.CreateForm(TdmMain, dmMain);
  Application.CreateForm(TfrmMain, frmMain);
  Application.MainFormOnTaskbar := True;
  Application.Run;
Walter Landwehr
Mfg

Walter

Geändert von Walter Landwehr ( 3. Mär 2015 um 09:50 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Schutzverletzung nach Programmende

  Alt 3. Mär 2015, 09:53
Ich vermute mal gar nicht.
Als alternative müsstest du diese zur Laufzeit (Dynamisch) einbinden.
Ob diese sich aber gegenseitig stören kann ich allerdings nicht mit Bestimmtheit sagen.

gruss

Geändert von EWeiss ( 3. Mär 2015 um 10:08 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Schutzverletzung nach Programmende

  Alt 3. Mär 2015, 10:19
Du könntest einmal versuchen, die zweite Komponente, die sich deinen Angaben zufolge nicht nicht mit der ersten auf demselben Formular platzieren läßt, in OnCreate zur Laufzeit zu erstellen und in OnDestroy wieder freizugeben:
Delphi-Quellcode:
Procedure TfrmMain.FormCreate(Sender: TObject);
begin
  MyPanelStyler := TAdvPanelStyler.Create;
end;

Procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  MyPanelStyler.Free; // oder
  // FreeAndNil(MyPanelStyler);
end;
Wird der Fehler dadurch nicht behoben, versuchst du, beide Komponenten zur Laufzeit zu erstellen und eventuell die Erstellungsreihenfolge umzukehren.

Sorry, EWeiss, hatte nicht bemerkt, daß du das auch bereits vorgeschlagen hattest

Geändert von Perlsau ( 3. Mär 2015 um 11:43 Uhr) Grund: Sorry
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#6

AW: Schutzverletzung nach Programmende

  Alt 3. Mär 2015, 10:21
Man könnte natürlich auch den Support von TMS kontaktieren, wenn das Problem sich auf deren Komponenten zurückführen lässt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 04:19 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-2025 by Thomas Breitkreuz