Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi statisches Array mit Konstantenausdruck als Bereich - E2026 (https://www.delphipraxis.net/112394-statisches-array-mit-konstantenausdruck-als-bereich-e2026.html)

geofranz01 20. Apr 2008 12:06


statisches Array mit Konstantenausdruck als Bereich - E2026
 
Hallo,

ich versuche einen normalen Array anzulegen:

Delphi-Quellcode:
const buffersize:integer=4096;


type TByteBuffer:array[0..4096-1];//funktioniert

type TByteBuffer:array[0..buffersize-1];//!funktioniert nicht!

const buffersizemid:integer=buffersize/16;//funktioniert auch nicht
Wenn ich die Größe jetzt aber per Konstante festlegen will (Übersichtlichkeit wegen), funzt das nicht: Fehlermeldung [DCC Fehler] aesunit.pas(21): E2026 Konstantenausdruck erwartet

Sollte sowas nicht eigentlich funktionieren oder denke ich gerade falsch?? Delphi zeigt mir allerdings die richtigen Werte perToltip für z.B. buffersizemid an. (256)

mfg,
geofranz

Jelly 20. Apr 2008 12:23

Re: statisches Array mit Konstantenausdruck als Bereich - E2
 
Zitat:

Zitat von geofranz01
[delphi]type TByteBuffer:array[0..4096-1];//funktioniert

Also das funktioniert schonmal auch nicht, da du bereits hier die falsche Syntax benutzt... Probiers mal lieber so:
[pre]type TByteBuffer = array[0..4096-1] of TDeinType;[/pre]

Warum willst du die Array-Grösse von vorne herein einschränken, und dadurch nunnötigen Speicher verbraten... Warum nimmst du keine dynamischen Arrays oder noch besser irgendeine List (TObjectList, TCollection etc.)

1234588 20. Apr 2008 12:23

Re: statisches Array mit Konstantenausdruck als Bereich - E2
 
kann auch nicht funktionieren, da arrays unbestimmten typs sind ;)
und das letzte ist auch einfach:
Delphi-Quellcode:
const
  buffersizemid: integer = buffersize div 16;

Christian Seehase 20. Apr 2008 12:32

Re: statisches Array mit Konstantenausdruck als Bereich - E2
 
Moin geofranz,

das funktioniert nicht, da Du eine typisierte Konstante deklariert hast, und diese, je nach Compilereinstellung, auch änderbar sein können.
Wenn Du die Typenangabe weglässt, wird die Konstante auch als konstant angesehen, und kann, wie geplant verwendet werden.

Delphi-Quellcode:
const
  buffersize : integer =4096; // typisierte Konstante

const
  buffersize = 4096; // Konstante

geofranz01 20. Apr 2008 12:50

Re: statisches Array mit Konstantenausdruck als Bereich - E2
 
@Jelly: Uups, hab einfach of Byte wegkopiert vergessen. Im Quellcode waren sie aber drinn.
Ich verarbeite die Daten in solchen Blöcken dann weiter. Da machen imho dynamische und statische Arrays keine wirklichen Unterschied, oder doch?

@Christian Seehase: Ah! Ich wusste zwar nicht, dass sich Konstanten ändern können (eigentlich dem Namen nach wiedersprüchlich) aber daran lag es.

@1234588: 1. Habs vergessen zu kopieren im Quellcode sind sie bestimmt (of Byte). Mit '/' war auch ein Fehler, der allerdings erst nach dem untypisieren angezeigt wurde. Habs duch div ersetzt. Jetzt funktioniert alles wie gewüscht.

Danke an alle! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 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