Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#19

AW: Variablen nicht NIL 64Bit

  Alt 1. Sep 2018, 13:51

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

Geändert von Schokohase ( 1. Sep 2018 um 13:55 Uhr)
  Mit Zitat antworten Zitat