AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi With Blöcke führen zu W1048 / Unsafe typecast of 'xyz' to 'Pointer'
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von AWeber · begonnen am 5. Mär 2021 · letzter Beitrag vom 5. Mär 2021
Antwort Antwort
AWeber

Registriert seit: 12. Feb 2013
19 Beiträge
 
#1

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

  Alt 5. Mär 2021, 08:02
Delphi-Version: 10.4 Sydney
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é
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 5. Mär 2021, 08:09
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;
Markus Kinzler
  Mit Zitat antworten Zitat
AWeber

Registriert seit: 12. Feb 2013
19 Beiträge
 
#3

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

  Alt 5. Mär 2021, 08:21
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é
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 5. Mär 2021, 09:55
Hier kann Delphi auch den Variablen/Ziel-Typ automatisch bestimmen, aus der Quelle.
var c := self.Canvas;

Den Fehler im Support melden?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 5. Mär 2021, 10:19
Den Fehler im Support melden?
Ähm...
Übrigends Emba kennt den Fehler / Problem seit 10.2. (https://quality.embarcadero.com/browse/RSP-17326)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 5. Mär 2021, 10:47
Den Fehler im Support melden?
Ähm...
Ü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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 5. Mär 2021, 10:56
Einer hatte mal was vor 4 Jahren gemeldet ... heißt aber nicht, dass die immernoch daran arbeiten denken.
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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