Delphi-Quellcode:
if Assigned(TempFont) then begin
GdipDeleteFont(TempFont);
TempFont := nil; // H2077 Auf 'TempFont' zugewiesener Wert wird niemals mehr benutzt
end;
Ist logisch weil du den Font
vorher nicht verwendest.
Aber Ich. Siehe!
Du hast den Sinn der Warnung immer noch nicht verstanden.
Du weist der Variablen einen Wert zu, aber dieser Wert wird
NACH dieser Code-Zeile niemals verwendet. Diese Zeile ist also prinzipiell überflüssig.
Ob du vorher die Variable mit ihrem Inhlat verwendet hast oder nicht, spielt hier keine Geige. Es geht um diese Zuweisung und den Code
danach.
Dein Code könnte also so aussehen
Delphi-Quellcode:
var
Graphics: LONG_PTR;
Fam: GpFontFamily;
TempFont: GpFont;
rb: TRect;
xWidth, YHeight: Integer;
strFormat: GPSTRINGFORMAT;
boundingBox, layoutRect: TGPRectF;
begin
result := GenericError;
strFormat := nil;
Fam := nil;
TempFont := nil; ..// hier kommt Warnung unter D2010 in Delphi 10.2.3 nicht. Deshalb war es vorher nicht addiert.
// habe es aber jetzt trotzdem addiert und ignoriere die Warnung.
Graphics := 0;
try
// ... schnipp ... schnapp ...
finally
if Graphics <> 0 then
begin
GdipCheck(GdipDeleteGraphics(Graphics));
//Graphics := 0;
end;
if Assigned(TempFont) then
begin
GdipCheck(GdipDeleteFont(TempFont)); // Und hier kracht es unter Win10 wenn TempFont mit irgendwas gefüllt wird. (In D2010 nicht! )
//TempFont := nil;
end;
if Assigned(Fam) then
begin
GdipCheck(GdipDeleteFontFamily(Fam));
//Fam := nil;
end;
end;
end;
und müsste jetzt 3 Warnungen weniger produzieren