Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Typecast array zu integer?! (https://www.delphipraxis.net/157226-typecast-array-zu-integer.html)

ThYpHoOn 4. Jan 2011 09:44

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:
Result:=signature = Integer(FilerSignature);
Signature ist Integer, Filler Signature ist ein Array folgendermaßen deklariert:
Code:
FilerSignature: array[1..4] of Char = 'TPF0'; // don't resource
Ich vermute Delphi 5 hat den Typecast erlaubt, die Frage ist nur wie/was hat er damit gemacht, ein Array zum Integer zu machen?

Klaus01 4. Jan 2011 09:51

AW: Typecast array zu integer?!
 
Guten Morgen,

was da passiert kann ich auch nicht sagen.

Aber bessert sich das Verhalten, wenn Du
Delphi-Quellcode:
FilerSignature: array[1..4] of AnsiChar = 'TPF0';
so deklarierst.

Grüße
Klaus

Bummi 4. Jan 2011 09:53

AW: Typecast array zu integer?!
 
Ohne über Sinn und Unsinn streiten zu wollen
Delphi-Quellcode:
FilerSignature: array[1..4] of AnsiChar = 'TPF0';

himitsu 4. Jan 2011 10:58

AW: Typecast array zu integer?!
 
Delphi XE

Char = WideChar

also
Delphi-Quellcode:
array[1..4] of Char
= 4 * 2 Byte = 8 Byte
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.

Luckie 4. Jan 2011 11:20

AW: Typecast array zu integer?!
 
Wer hat damals schon damit gerechnet, dass Delphi auch mal standardmäßig Unicode können wird? ;)

himitsu 4. Jan 2011 11:26

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:

ThYpHoOn 4. Jan 2011 13:33

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

Assarbad 4. Jan 2011 20:54

AW: Typecast array zu integer?!
 
Zitat:

Zitat von Luckie (Beitrag 1072151)
Wer hat damals schon damit gerechnet, dass Delphi auch mal standardmäßig Unicode können wird? ;)

Wer könnte heute denn auch damit rechnen, daß sich irgendwann die Reihenfolge der Bytes in einem Word oder Longword usw. ändern könnte ... :roll:

Wenn schon, dann sollte es Endian-neutral verglichen werden ... denn FPC unterstützt bspw. BE- und LE-Architekturen.

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 ...

mkinzler 4. Jan 2011 20:59

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 00:25 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