Illegal type conversion: "TIPKInject" to "LongInt"

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Illegal type conversion: "TIPKInject" to "LongInt"

Beitrag von Targion »

Hallo!
Um Libs mit PIC-Code zu erstellen nutze ich derzeit FPC 2.3.1, da die PIC-unterstützung in FPC 2.2.4 komplett vermurkst ist. Nun bekomme ich beim kompilieren meines Codes aber folgenden Fehler, der vorher (mit FPC 2.2.4) nicht da war:

Code: Alles auswählen

ERROR: Illegal type conversion: "TIPKInject" to "LongInt"
An dieser Stelle:

Code: Alles auswählen

function TIPKInject.GetHandle: THandle;
begin
  Result := THandle(Self);
end;
Was soll das? Gibt eine sauberere Methode?

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Illegal type conversion: "TIPKInject" to "LongInt"

Beitrag von theo »

Hast du THandle selber definiert?
Müsste doch eigentlich QWord sein auf 64bit.

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Illegal type conversion: "TIPKInject" to "LongInt"

Beitrag von Targion »

Nein, THandle ist die Standarddefinition.
Wäre

Code: Alles auswählen

Result := THandle(@self);
auch eine Lösung?

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Illegal type conversion: "TIPKInject" to "LongInt"

Beitrag von theo »

Aber irgend etwas muss doch hier als longint betrachtet werden (siehe Fehlermeldung).
Das kann unter 64bit afaik weder "Self" noch THandle sein. Oder?

Wie ist denn THandle bei dir definiert auf der fraglichen Plattform?

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Illegal type conversion: "TIPKInject" to "LongInt"

Beitrag von Socke »

Versuchs mal mit:

Code: Alles auswählen

Result := PtrInt(Self)
Da funktioniert die Umwandlung immer; die kann dann schon mal ausgeschlossen werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Illegal type conversion: "TIPKInject" to "LongInt"

Beitrag von Targion »

Okay, ich probier's mal so.

Antworten