FireDAC: Access Violation in bds.exe beim Verwenden der VCL-Komponente

Click here for the English article.

Symptom

Beim Einfügen einer List & Label-Komponente, wie bspw. TListLabelXX aus der Palette, kann es zu einer Access Violation im Modul bds.exe kommen mit einem Callstack dieser Form:

...
{exceptiondiag290.bpl} JclDebug.TJclStackBaseList.Create (Line 4932, "JclDebug.pas" + 3)
{rtl290.bpl } System.TObject.InitInstance (Line 18514, "System.pas" + 8)
{rtl290.bpl } System.@AfterConstruction (Line 19710, "System.pas" + 2)
{rtl290.bpl } System.TMonitor.Exit (Line 20105, "System.pas" + 1)
{ListLabelXXComponents.bpl} ListLabelXX.TListLabelXX.JobFree (Line 1954, "ListLabelXX.pas" + 3)
{ListLabelXXComponents.bpl} ListLabelXX.TListLabelXX.Destroy (Line 1103, "ListLabelXX.pas" + 1)
{rtl290.bpl } System.@ClassCreate (Line 19691, "System.pas" + 35)
{rtl290.bpl } System.@IntfCopy (Line 39146, "System.pas" + 6)
{rtl290.bpl } System.@AfterConstruction (Line 19710, "System.pas" + 2)
{ListLabelXXComponents.bpl} ListLabelXX.TListLabelXX.JobInit (Line 1902, "ListLabelXX.pas" + 10)
{ListLabelXXComponents.bpl} ListLabelXX.TListLabelXX.Create (Line 1090, "ListLabelXXpas" + 41)
{delphicoreide290.bpl} CompPalMgr.TComponentPalettePageItemDelegate.CreateComponent (Line 2743, "CompPalMgr.pas" + 2)
...

Mögliche Ursache und Hintergrund

Wenn die Komponente von List & Label verwendet wird, werden die nativen Module/DLLs geladen. Diese befinden sich in der Windows-Installation unter <InstallDIR>\Redistribution\x86\ für die 32-Bit-Module und unter <InstallDIR>\Redistribution\x64\ für die 64-Bit-Module. Damit das Laden der Module dort funktioniert, trägt die List & Label-Installation die beiden Pfade in die PATH-Variable des Systems bereits ein.

Doch in wenigen Szenarien kann das Embarcadero RAD Studio nicht die Werte aus der PATH-Variable auslesen/verwenden oder aber hat in seinen eigenen Einstellungen für Umgebungsvariablen eine eigene PATH-Variable definiert, die die PATH-Variable des Systems “überschreibt”.

Mögliche Lösungen

Unter Tools > Optionen > IDE > Umgebungsvariablen in Embarcadero RAD Studio im Bereich Vom Benutzer überschriebene Systemvariablen ist bereits eine andere PATH-Variable enthalten, die die Pfade der List & Label Installation noch nicht enthält. Aktualisieren Sie diese gesonderte PATH-Variable entsprechend um die Werte aus der List & Label-Installation.

Alternativ kann auch in der Datei environment.proj im Verzeichnis %APPDATA%\Embarcadero\BDS\<Version>\ überprüft werden, ob die Pfade der List & Label-Installation für die PATH-Variable enthalten sind und diese ggf. auch dort aktualisieren.