Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi const <name> : <datentyp> = <wert> und case <name (https://www.delphipraxis.net/117702-const-name-datentyp-%3D-wert-und-case-name.html)

sveni2211 23. Jul 2008 21:11

Re: const <name> : <datentyp> = <wert> und
 
Zitat:

Zitat von SirThornberry
Warum willst du überhaupt den Typ angeben? Bei einer Konstante ist der Typ doch völlig egal?!

Wenn Delphi der Meinung ist, ein Datentyp sei zu klein um einen Wert zu übernehmen (z.B. wenn du einem LongWord einen Int64 zuweist), dann gibt das keinen Typ- Fehler wie unter .NET, sondern Delphi erweitert einfach den kleineren der Beiden. In dem Fall würde der LongWord einfach zu Int64.

Wenn die Daten nun übertragen werden als Bit- Strom und auf der anderen Seite Byte für Byte ausgelesen und interpretiert, wäre es fatal, wenn statt einem Byte, das gelesen werden soll, in Integer angeliefert worden wäre. In dem Fall würde es nicht reichen, ein Byte zu lesen, um den darin enthaltenen Zahlenwert richtig zu interpretieren. Sondern ich hätte nur den Low oder High Anteil des Integer, was als Byte interpretiert vollkommenen Quark ergibt.
Um das von vorherein zu vermeiden, typisiere ich halt alles durch und überlasse nichts dem Compiler.
In gewisser Weise so, wie es unter .NET automatisch geschicht. Dort kann man einen Int16 nie einen Int32 zuweisen, außer man tut ihn explizit (und damit bewußt) casten durch Convert.ToInt16.

alzaimar 23. Jul 2008 21:23

Re: const <name> : <datentyp> = <wert> und
 
Du hättest die Konstanste auch typenlos definieren, aber beim verschicken sicherstellen können, das genau ein BYTE übertragen wird. Implizite Annahmen (so wie Du sie erfragt hast) sind sehr gefährlich, wie Du schon angemerkt hat (anderer Compiler, Delphi-Entwickler haben schlechte Laune etc.). Daher würde ich diese Zweifel im Code explizit ausräumen. Dann ergeben sich solche Fragen gar nicht.

Ich denke, eine Konstante ist ein Platzhalter. Das man Konstanten ändern kann, widerspricht irgendwie dem Terminus "Konstante".

Jeff93 24. Jul 2008 11:00

Re: const <name> : <datentyp> = <wert> und
 
In Turbo Delphi löst der Compiler bei einer Zuweisung einer typisierten Konstante einen Fehler aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  test : Integer = 1;
begin
  test := 100; //Hier der Fehler
end;
Code:
[E2064] Der linken Seite kann nichts zugewiesen werden

DeddyH 24. Jul 2008 11:12

Re: const <name> : <datentyp> = <wert> und
 
Siehe #9 ;)

alzaimar 24. Jul 2008 11:43

Re: const <name> : <datentyp> = <wert> und
 
Zitat:

Zitat von DeddyH
Siehe #9 ;)

Oder offiziell mit einem Compilerschalter (Assignable typed constants oder so

Jeff93 24. Jul 2008 18:59

Re: const <name> : <datentyp> = <wert> und
 
^^ sorry überlesen :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz