![]() |
Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Hallo und guten Abend...
Wenn ich bei meinem Projekt unter "Delphi Compiler > Compilieren" "Optimierung" einschalte, dann kann ich mein Projekt nicht mehr compilieren: F2084 Interner Fehler: C1907. - Nach dem Abbruch zeigt der Cursor auf ein end; einer Prozedur. Wenn ich die Optimierung ausschalte, klappt es wieder. Embarcadero schreibt dazu: ![]() Hat jemand weitere Tipps? |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Projekt bereinigen und/oder Delphi neustarten.
Interne Compiler-Fehler habe ich im Schnitt zehn Stück pro Tag, IDE neustarten oder Projekt bereinigen hat bislang immer geholfen. |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Hallo schöner Günther
besten Dank für deine Tipps. Weder Bereinigung, Neustart von Windows und Delphi lösen das Problem. Ich habe die Zeile isoliert, welche den Fehler auslöst:
Delphi-Quellcode:
Hingegen funktioniert zum Beispiel:
hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*25, hh*25, hh*25); // ERR
Delphi-Quellcode:
oder es klappt auch wenn ich in der Fehlerzeile zwei der drei RGB Werte durch Konstanten ersetze:
hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*20, hh*40, 20); // OK
Delphi-Quellcode:
hbit.Canvas.pen.color := Winapi.Windows.RGB(25, hh*25, 25);
Das Projekt besteht aus vielen Forms/Units. Es ist dabei egal in welche Unit und wo in der Unit ich diese Test-procedure reinkopiere:
Delphi-Quellcode:
Das Verhalten ist immer gleich.
procedure dummydummy;
var hh : integer; hbit : VCL.Graphics.TBitMap; begin hbit := VCL.Graphics.TBitmap.Create; try hh := 1; // hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*20, hh*40, 20); // OK hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*25, hh*25, 25); // ERR finally hbit.free; end; end; |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Ja, das kann ich auch in 10.2 reproduzieren. Einen Weg das zu umgehen gibt es, wenn du nicht direkt an Canvas.pen.color zuweist, sondern den Umweg über eine Variable machst:
Delphi-Quellcode:
Dieser Code kompiliert fehlerfrei. Ich denke das ist ein Fall für einen Bugreport.
procedure dummydummy;
var hh : Integer; RGBColor: Cardinal; hbit : VCL.Graphics.TBitMap; begin hbit := VCL.Graphics.TBitmap.Create; try hh := 1; RGBColor := Winapi.Windows.RGB(hh*25, hh*25, 25); // ERR hbit.Canvas.pen.color := RGBColor; finally hbit.free; end; end; |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Das könnte damit zusammenhängen, daß RGB zum Einen
Delphi-Quellcode:
ist und zum Anderen ein COLORREF (=DWORD) zurückliefert, von
inline
Delphi-Quellcode:
aber ein
TPen.Color
Delphi-Quellcode:
(-$7FFFFFFF-1..$7FFFFFFF) erwartet wird, was ein vorzeichenbehafteter Typ ist.
TColor
Das mit dem Bugreport ist eine gute Idee. Insbesondere da der Testcase relativ einfach ist. |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Besten Dank für die Tests mit 10.2 und für den Hinweis zu TColor, RGB.
Mit "Projektoptionen > Compiler > MSI Build extern...=TRUE" funktioniert's übrigens in allen Fällen. Ich erwarte, dass der Compiler bei Zuweisung RGB -> TColor höchstens eine Meldung ausgibt. Konsequent ist anders: Beim Code unten läuft der Compiler (Optimierung=TRUE) nicht in einen F2084.
Delphi-Quellcode:
procedure TForm169.FormCreate(Sender: TObject);
var hh : integer; begin hh := 1; color := RGB( hh*25, hh*25, hh*25 ); end; |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Zitat:
Das zeigt aber auch wieder mal, wie wichtig konkrete, reproduzierbare Testfälle sind. |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Zitat:
Du solltest dafür unbedingt einen QC Bug-Report erstellen. |
AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Ich war mal so frei:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 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