Conversion betw. ordinals and pointers not portable [gelöst]
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Conversion betw. ordinals and pointers not portable [gelöst]
Gibt es einen Weg den im Titel genanten Hint zu umgehen? Er tritt bei einem Typecast bei der Verarbeitung einer Windows-Message auf (PCWPRetStruct(lParam)). Wahrscheinlich muss man es einfach ignorieren, aber vielleicht git es ja doch einen Kniff, wie man diesen Typecast anders (glücklicher) ausdrücken kann.
Zuletzt geändert von RSE am Mi 16. Dez 2009, 18:52, insgesamt 1-mal geändert.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Conversion between ordinals and pointers is not portable
Mit dem Typ LPARAM bin ich ja festgelegt, und LPARAM = LONG_PTR = PtrInt; Von daher passt das also, aber das PCWPRetStruct ist und bleibt nunmal erstmal ein normaler Pointer.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
Re: Conversion between ordinals and pointers is not portable
RSE hat geschrieben:Mit dem Typ LPARAM bin ich ja festgelegt, und LPARAM = LONG_PTR = PtrInt; Von daher passt das also, aber das PCWPRetStruct ist und bleibt nunmal erstmal ein normaler Pointer.
Naja, bei der Warnung geht's ja um portablen Code (Haupts. 32bit <> 64bit). LPARAM ist auf 64bit Windows auch 64bit lang afaik.
Deshalb ist es dort kein LONG_PTR (32bit) afaics. Jedenfalls sollte man Pointer nicht in einen Cardinal packen, wenn man gedenkt auch für 64bit zu kompilieren.
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Conversion between ordinals and pointers is not portable
Hm, was lese ich nun aus deiner Aussage? Der Hint ist eigentlich nicht gerechtfertigt und mein Code IST portabel (32bit <> 64bit)?
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
Re: Conversion between ordinals and pointers is not portable
RSE hat geschrieben:Hm, was lese ich nun aus deiner Aussage? Der Hint ist eigentlich nicht gerechtfertigt und mein Code IST portabel (32bit <> 64bit)?
Der Hint ist wahrsch. in diesem Falle zu ignorieren. Der Compiler kann aber nicht wissen, dass auf 64bit Windows auch der LPARAM 64bit lang wird.
Deshalb ist es auch nur ein Hint und keine Warnung.
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Conversion between ordinals and pointers is not portable
theo hat geschrieben:Der Compiler kann aber nicht wissen, dass auf 64bit Windows auch der LPARAM 64bit lang wird.
Dann weiß er es also bei PtrInt auch nicht... Na wie dem auch sei, ich ignorier es einfach, danke für die Erklärung!
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!