Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zugriffsverletzung in rtl70.bpl bei eigener Komponente und Bitmapzuweisung (https://www.delphipraxis.net/152613-zugriffsverletzung-rtl70-bpl-bei-eigener-komponente-und-bitmapzuweisung.html)

Helmi 29. Jun 2010 15:27

Zugriffsverletzung in rtl70.bpl bei eigener Komponente und Bitmapzuweisung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich hab mir ein Edit-Feld gebastelt, das im rechten Bereich einen SpeedButton beinhaltet.

Die Logik/Ausführung hab ich dem SpinEdit abgekupftert.

Soweit funktionierts auch.
Ausser ich füge im DesignMode von Delphi der Property "Picture" ein Bitmap von Hand zu.
Dann bekomm ich folgende Fehlermeldung:

Zitat:

---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 40005A0C in Modul 'rtl70.bpl'. Lesen von Adresse 53EC8B31.
---------------------------
OK
---------------------------
oder:

Zitat:

---------------------------
Anwendungsfehler
---------------------------
Exception EInvalidPointer in Modul rtl70.bpl bei 00003078.

Ungültige Zeigeroperation.


---------------------------
OK
---------------------------
Vermutlich hat es mit dieser procedure zu tun:

Delphi-Quellcode:
procedure TAlignLabeledButtonEdit.SetBitmap(Value: TBitmap);
begin
  //Wird aufgerufen, wenn sich die Variable "FBitmap" ändert
  FBitmap := Value;

  FButton.Glyph := Value;
  Invalidate;
end;
Wobei das Bitmap richtig im Button dargestellt wird.

Wenn die o. g. Meldungen auftauchen, dann kann ich Delphi nur noch via Task-Manager
abschiessen, weil es sich nicht mehr normal beenden lässt.

Leider kann ich auch nicht wirklich das Problem diagnostizieren.
Ich vermute ein Pointer-Problem.

Anbei mal meine Pas-Datei der Komponente.

Vielleicht kann jemand mal ein Auge drauf werfen...

Bummi 29. Jun 2010 15:32

AW: Zugriffsverletzung in rtl70.bpl bei eigener Komponente und Bitmapzuweisung
 
ich komme gerade nicht zu testen, aber müßte der Teil

FBitmap := Value;
FButton.Glyph := Value;

nicht heißen

FBitmap.Assign(Value);
FButton.Glyph := FBitmap;

mleyen 29. Jun 2010 15:38

AW: Zugriffsverletzung in rtl70.bpl bei eigener Komponente und Bitmapzuweisung
 
Hi, du hast FBitmap nirgends initialisiert.
Füg mal dem Constructor entweder
Delphi-Quellcode:
FBitmap := TBitmap.Create
hinzu,
oder verhindere die Nutzung im Designmodus durch die Prüfung auf Delphi-Referenz durchsuchencsDesigning in Delphi-Referenz durchsuchenComponentState

Helmi 29. Jun 2010 15:40

AW: Zugriffsverletzung in rtl70.bpl bei eigener Komponente und Bitmapzuweisung
 
Zitat:

Zitat von mleyen (Beitrag 1032357)
Hi, du hast FBitmap nirgends initialisiert.
Füg mal dem Constructor entweder
Delphi-Quellcode:
FBitmap := TBitmap.Create
hinzu,
oder verhindere die Nutzung im Designmodus durch die Prüfung auf Delphi-Referenz durchsuchencsDesigning in Delphi-Referenz durchsuchenComponentState

Ich vergaß zu erwähnen, dass FBitmap im Constructior schon erzeugt wird.
War meine erste Vermutung

Zitat:

Zitat von Bummi (Beitrag 1032356)
ich komme gerade nicht zu testen, aber müßte der Teil

FBitmap := Value;
FButton.Glyph := Value;

nicht heißen

FBitmap.Assign(Value);
FButton.Glyph := FBitmap;

Ich bin gerade etwas überrascht, dass der o. s. Code die Fehler nicht mehr liefert
Ich hatte eigentlich das Gleiche schon ausprobiert - aber trotzdem kam der Fehler :gruebel:

DataCool 29. Jun 2010 15:44

AW: Zugriffsverletzung in rtl70.bpl bei eigener Komponente und Bitmapzuweisung
 
Hi,

es sollte eigentlich :

Delphi-Quellcode:
FBitmap.Assign(Value);
FButton.Glyph.Assign(FBitmap);
heisen, teste das mal.

Greetz Data


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 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