![]() |
Typecast array zu integer?!
Moin,
bin gerade dabei eine alte Library von Delphi 5 zum neuen Delphi XE zu übertragen, der Compiler hängt nun bei einem "Invalid typecast" an folgender Stelle:
Code:
Signature ist Integer, Filler Signature ist ein Array folgendermaßen deklariert:
Result:=signature = Integer(FilerSignature);
Code:
Ich vermute Delphi 5 hat den Typecast erlaubt, die Frage ist nur wie/was hat er damit gemacht, ein Array zum Integer zu machen?
FilerSignature: array[1..4] of Char = 'TPF0'; // don't resource
|
AW: Typecast array zu integer?!
Guten Morgen,
was da passiert kann ich auch nicht sagen. Aber bessert sich das Verhalten, wenn Du
Delphi-Quellcode:
so deklarierst.
FilerSignature: array[1..4] of AnsiChar = 'TPF0';
Grüße Klaus |
AW: Typecast array zu integer?!
Ohne über Sinn und Unsinn streiten zu wollen
Delphi-Quellcode:
FilerSignature: array[1..4] of AnsiChar = 'TPF0';
|
AW: Typecast array zu integer?!
Delphi XE
Char = WideChar also
Delphi-Quellcode:
= 4 * 2 Byte = 8 Byte
array[1..4] of Char
Integer = 4 Byte 4 Byte <> 8 Byte, also kann der Cast nicht gehn. PS: genau deswesen sag ich ja, mann muß bei solchen Deklarationen aufpassen. Hätte man früher schon ordnungsgemäß´das AnsiChar verwendet, weil man es hier definitiv als Byte/AnsiChar benötigt, dann hätte es jetzt keine Probleme gegeben. |
AW: Typecast array zu integer?!
Wer hat damals schon damit gerechnet, dass Delphi auch mal standardmäßig Unicode können wird? ;)
|
AW: Typecast array zu integer?!
Seit Windows NT hätte man damit rechnen können. :angle2:
Und seit mindestens Delphi 2 heißt es in der OH, daß Char/Integer/Cardinal dynamisch sind. Genauso wie man seit XP/Vista damit rechnen könnte, daß Delphi schon 64 Bit kann. :stupid: |
AW: Typecast array zu integer?!
Vielen Dank für die hilfreichen Antworten und die technische Erklärung, hätte ich auch selbst drauf kommen können :S
Greetz, ThYpHoOn |
AW: Typecast array zu integer?!
Zitat:
Wenn schon, dann sollte es ![]() Wenn ich ein Dateiformat deklariere ist das genauso wie wenn ich ein Netzwerkprotokoll deklariere. Da habe ich als umsichtiger Entwickler die "host byte order" und die "network byte order" zu beachten, weil das sonst zu bösen Überraschungen führen könnte. Festspeicher benutzt üblicherweise die "natürliche" Byte-Reihenfolge, also Big Endian - während Arbeitsspeicher der Byte-Reihenfolge des Prozessors gehorcht. Und bevor hier das Argument kommt, daß das ja zuviel Aufwand sei, will ich vorneweg einwenden, daß Embedded im Kommen ist und sich auch die Dinosaurier in der (Object-)Pascal-Gemeinde nicht ewig davor verstecken können werden. Aber genug davon ... |
AW: Typecast array zu integer?!
Axh wie gut es da ja ist, das ARM eingeknickt ist und nun auch den Intel-Wahnsinn mitmacht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz