Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer' (https://www.delphipraxis.net/207227-bloecke-fuehren-zu-w1048-unsafe-typecast-xyz-pointer.html)

AWeber 5. Mär 2021 07:02

Delphi-Version: 10.4 Sydney

With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Hallo,

ich arbeite derzeit Code auf im Rahmen einer x64 Umstellung, dabei stoße ich immer wieder auf obiges Warning, was ich bisher nicht verstehe. Jemand eine Idee ob das einen tiefen Grund hat -- oder evtl. eine Compiler "macke".

z.B. gibt es folgende Code-Sequenzen

Code:
procedure TMyControl.Paint;
begin
  with Canvas do // <-- W0148?
  begin
    ... Zeichen aufrufe
  end;
end;

procedure TMyControl.DoSome;
var
  edt: TEdit;
begin
  edt := TEdit.Create(self);
  with edt do // W1048  TEdit to Pointer?
  begin
    Parent := self;
    Text := 'X';
    Left := 0;
    Top := 0;
    Width := 128;
  end;
end;
Danke schonmal für erhellende Vorschläge - warum / wieso - ja ich weiss ich könnte den W1048 auch abschalten, aber dann gehen leider evtl. Sachen unter die meine x64 Umstellung torpedieren.

André

mkinzler 5. Mär 2021 07:09

AW: With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Delphi-Quellcode:
with
kann zu Uneindeutigkeiten führen, da Methoden/Attribute/Properties so mehrfach (aus Klasse/von with) vorhanden sein können und dann die "falsche" verwendet wird
beeser:
Delphi-Quellcode:
procedure TMyControl.Paint;
begin
  var c: TCanvas := self.Canvas;
  ...
  c. ...
end;

AWeber 5. Mär 2021 07:21

AW: With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Hallo,

das mit der Zwischenvariable hilft leider auch nicht immer, ich habe auch X Fälle wo eine solche existiert und trotzdem der W1048 als Warnung auftritt.
Übrigends Emba kennt den Fehler / Problem seit 10.2. (https://quality.embarcadero.com/browse/RSP-17326)
Ich habe dort jetzt nochmal nachgehakt, mal sehen ob eine Reaktion erfolgt.

André

himitsu 5. Mär 2021 08:55

AW: With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Hier kann Delphi auch den Variablen/Ziel-Typ automatisch bestimmen, aus der Quelle.
Delphi-Quellcode:
var c := self.Canvas;


Den Fehler im Support melden?

Uwe Raabe 5. Mär 2021 09:19

AW: With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Zitat:

Zitat von himitsu (Beitrag 1484474)
Den Fehler im Support melden?

Ähm...
Zitat:

Zitat von AWeber (Beitrag 1484470)
Übrigends Emba kennt den Fehler / Problem seit 10.2. (https://quality.embarcadero.com/browse/RSP-17326)


TiGü 5. Mär 2021 09:47

AW: With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1484476)
Zitat:

Zitat von himitsu (Beitrag 1484474)
Den Fehler im Support melden?

Ähm...
Zitat:

Zitat von AWeber (Beitrag 1484470)
Übrigends Emba kennt den Fehler / Problem seit 10.2. (https://quality.embarcadero.com/browse/RSP-17326)


himitsu liest gefühlt immer nur die ersten zwei Beiträge und antwortet dann direkt. :stupid:

himitsu 5. Mär 2021 09:56

AW: With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
 
Einer hatte mal was vor 4 Jahren gemeldet ... heißt aber nicht, dass die immernoch daran arbeiten denken. :stupid:
André hat inzwischen drunter geantwortet und vielleicht auch gevotet, damit Emba weiß, dass es noch aktuell und noch mehr eine Lösung brauchen könnten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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