AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen GDIPlus (Erik van Bilsen) mit ‘(GDI+Error) Generic Error’ nach Zugriff auf WinControl
Thema durchsuchen
Ansicht
Themen-Optionen

GDIPlus (Erik van Bilsen) mit ‘(GDI+Error) Generic Error’ nach Zugriff auf WinControl

Ein Thema von HintByError · begonnen am 22. Dez 2018 · letzter Beitrag vom 24. Dez 2018
 
HintByError

Registriert seit: 13. Dez 2018
Ort: Marburg
21 Beiträge
 
Delphi XE2 Professional
 
#1

GDIPlus (Erik van Bilsen) mit ‘(GDI+Error) Generic Error’ nach Zugriff auf WinControl

  Alt 22. Dez 2018, 10:49
Beschreibung des Symptoms

Es liegt eine initialisierte lokale Variable g des Typs IGPGraphics vor, die bereit ist, in eine Steuerelement der Klasse TPaintBox Bildschirmausgaben zu tätigen. Wenn nach der Initialisierung von g ein Zugriff auf die Felder von Instanzen der Klassen TComboBox, TListBox oder TMemo erfolgt, wird die nachfolgende Zeichenoperation mittels g mit der Fehlermeldung „(GDI+Error) Generic Error“ abgebrochen. Wird nach dem Zugriff g neu initialisiert, dann tritt der Fehler nicht mehr auf.

Interpretation

Offensichtlich hat der lesende Zugriff auf die Klassen TComboBox, TListBox und TMemo einen schreibenden Seiteneffekt auf die lokale Variable g zur Folge. Aufgrund der Kapselung dürfte ein solcher Effekt nicht eintreten. Die Klassen TComboBox, TListBox und TMemo enthalten alle eine Klasse vom Typ TStringlist. Wenn man auf eine separate Instanz des Typs TStringList vor der GDI-Operation einen Zugriff ausführt, dann tritt kein Fehler auf. Der Code von Erik van Bilsen ist minimalistisch und offensichtlich fehlerfrei. Kommt der Seiteneffekt aus dem Betriebssystem oder aus der VCL?

Demonstrationsprogramm

Rechts auf dem Formular befindet sich ein Optionsfeld, in dem der Fall ausgewählt werden kann. Die Schaltfläche „GDI Test“ bringt dann die Zeichenoperationen zur Ausführung. Es wird ein Kreuz in der Zeichenfläche im Formular unten ausgeführt. Bei den Optionen „Kein Zugriff“ und „Zugriff mit Neuinitialisierung“ wird, ohne eine Fehlermeldung hervorzurufen, gezeichnet. Quellcode befindet sich in der angehängten .zip-Datei.
Angehängte Grafiken
Dateityp: png Demo_GDIPlus_WinControl.png (22,5 KB, 23x aufgerufen)
Angehängte Dateien
Dateityp: zip Demo_GDIPlus_WinControl.zip (165,4 KB, 6x aufgerufen)
Wolfgang Sauer
  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 22:55 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