Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Error 2008 - inkompatible Typen (https://www.delphipraxis.net/189999-error-2008-inkompatible-typen.html)

WerkstattBoss 18. Aug 2016 14:51

Delphi-Version: XE2

Error 2008 - inkompatible Typen
 
Hallo,
ich bekomme beim, kompilieren den Fehler 2008
Delphi-Quellcode:
procedure acLoadResStr(var AValue: acString; ALib: HModule; AIdent, DefValue: integer; Suffix: acString = ''); overload;
var
  ResStringRec: TResStringRec;
begin
  if Lib <> 0 then begin
    ResStringRec.Module := {$IFDEF DELPHI5}@Longint(ALib){$ELSE}@ALib{$ENDIF} ;<-----------------------in dieser Zeile
    ResStringRec.Identifier := AIdent;
und ich weiß nicht weiter.
Der code stammt aus einer kommerziellen Library, ich habe die Sourcecode Lizenz. Versuche, den Programmierer zu erreichen, fruchten nicht.

Irgendeine Idee?

TIA Rolf

bernau 18. Aug 2016 15:10

AW: Error 2008 - inkompatible Typen
 
Dazu müsstes du auch die Deklaration von TResStringRec mal posten, damit man sehen kann wie TResStringRec.Module definiert ist.

himitsu 18. Aug 2016 15:18

AW: Error 2008 - inkompatible Typen
 
Erstmal fehlen hier "alle" wichtigen Infos:
* was für eine Lib
* was für Typen, bzw. wie ist TResStringRec deklariert? (man mag es nicht glaube, aber Strg+C funktioniert auch im Compiler-Log)
* und was soll DELPHI15 sein? (ich weiß doch nicht, wie die Definition von dem aussieht, denn das ist keine Definition von Delphi/Embarcadero)

Delphi 7 = Compiler Version 15
Delphi XE = Product Version 15
Delphi XE7 = IDE Version 15

XE2 : Compiler 23, Product 16, IDE 9

Ich denk jetzt einfach mal, das ist ein Quellcode "nur" für (bis) XE (Product 15).
Delphi-Quellcode:
{$IFDEF DELPHI5}
sollte dann wohl
Delphi-Quellcode:
{$IFDEF DELPHI6}
oder eher
Delphi-Quellcode:
{$IFDEF DELPHI5undhöher}
heißen, oder was auch immer die da definiert haben.

bernau 18. Aug 2016 15:23

AW: Error 2008 - inkompatible Typen
 
Zitat:

Zitat von himitsu (Beitrag 1345192)
* und was soll DELPHI15 sein?

Wo steht Delphi15?

himitsu 18. Aug 2016 15:25

AW: Error 2008 - inkompatible Typen
 
Zitat:

Zitat von bernau (Beitrag 1345194)
Delphi-Quellcode:
{$IFDEF DELPHI5}@Longint(ALib){$ELSE}@ALib{$ENDIF}

:stupid:

WerkstattBoss 18. Aug 2016 15:27

AW: Error 2008 - inkompatible Typen
 
@himitsu

Lib : Alphaskin Version 11.13

Delphi-Quellcode:
TResStringRec = packed record
    Module: ^Cardinal;
    Identifier: NativeUint;
  end;

{$IFDEF DELPHI5}@Longint(ALib){$ELSE}@ALib{$ENDIF} => $Ifdef Delphi5 ... $Else
Ausnahme für Delphi 5, sonst ...

Uwe Raabe 18. Aug 2016 16:40

AW: Error 2008 - inkompatible Typen
 
In XE2 entspricht HModule = THandle = NativeUInt, was nicht strikt kompatibel zu Cardinal ist.

WerkstattBoss 18. Aug 2016 16:43

AW: Error 2008 - inkompatible Typen
 
Das bedeutet praktisch ?

Uwe Raabe 18. Aug 2016 16:48

AW: Error 2008 - inkompatible Typen
 
Zitat:

Zitat von WerkstattBoss (Beitrag 1345205)
Das bedeutet praktisch ?

Daß du für XE2 das IFDEF erweiterst und einen entsprechenden Cast machst. Aber Vorsicht: das funktioniert nur unter 32-Bit. Bei 64-Bit sind Cardinal und NativeUInt nicht mehr binär-kompatibel. Eigentlich ist die Deklaration des Module-Felds ungünstig. Wenn da immer Pointer auf HModule reinkommen, dann sollte man das auch so deklarieren. Ist das denn die zu XE2 passende Version der Lib oder gibt es da auch was neueres?

mkinzler 18. Aug 2016 16:49

AW: Error 2008 - inkompatible Typen
 
Ändere es in NativeUInt


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr.
Seite 1 von 2  1 2      

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