Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mehrdimensionale Arrays mit Werten beladen (https://www.delphipraxis.net/140900-mehrdimensionale-arrays-mit-werten-beladen.html)

Blackstar 28. Sep 2009 14:54


Mehrdimensionale Arrays mit Werten beladen
 
Ich versuche vergeblich im Internet zu finden wie ich zB einen 2d Array einfach mit werten beladen kann

ich habe bisher:

Delphi-Quellcode:
type
meinarray = array[0..9,0..9] of integer;
und versuche
Delphi-Quellcode:
const meinarray =
  (
   (1,2,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,1,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,1,1,1,1,1,1,1,0,1)
  );
allerdings funktioniert das nicht

himitsu 28. Sep 2009 15:04

Re: Mehrdimensionale Arrays mit Werten beladen
 
Soetwas geht nur bei globalen Konstanten-, bzw. Variablen-Definitionen.

Also entweder alles einzeln zuweisen oder es über eine Konstante an die Variable zuweisen.

Wenn es die Initialbelegung einer globalen Variable ist, ginge es auch direkt.

messie 28. Sep 2009 15:16

Re: Mehrdimensionale Arrays mit Werten beladen
 
Ergänzung: Deine Deklarationen sind durcheinander. Du deklarierst einen Typ und willst den dann als Konstante beladen. Das geht mit wie schon gesagt mit globalen consts und vars
Delphi-Quellcode:
const
meinarray : array[0..9,0..9] of integer =
   ((1,2,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,1,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,1,1,1,1,1,1,1,0,1)
  );
Kompiliert, aber nicht geprüft.

Grüße, Messie

toms 28. Sep 2009 15:28

Re: Mehrdimensionale Arrays mit Werten beladen
 
Zitat:

Zitat von himitsu
Soetwas geht nur bei globalen Konstanten-, bzw. Variablen-Definitionen.

geht bei mir auch lokal:

Delphi-Quellcode:
type
  meinarray = array[0..9,0..9] of integer;
const
  a: meinarray = ...

himitsu 28. Sep 2009 19:10

Re: Mehrdimensionale Arrays mit Werten beladen
 
Ups, dann waren es nur die Variablen, wo es lokal nicht geht ... wäre ja och blöd, wenn man Konstanten keinen Wert zuweisen könnte :oops:

Und es fiehl mir auch jetzt erst auf
Zitat:

Delphi-Quellcode:
const meinarray =
  (
   (1,2,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,1,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,1,1,1,1,1,1,1,1),
   (1,0,0,0,0,0,0,0,0,1),
   (1,1,1,1,1,1,1,1,0,1)
  );

Bei komplexeren Typen mußt du immer einen Typdeklaration angeben, denn sonst weiß der Compiler ja nicht wie er es speichern soll.

Nur bei einfachen Ordinal- und String-Typen kann man es weglassen und der Compiler versucht dann einen passenden Typen zu finden String/WideString oder Byte/Word/LongWord/ShortInt/SmallInt/LongInt/Int64 ... halt je nach Größe des entsprechenden Wertes, bzw. die Ordinal-Typen werden oftmals auch direkt im QuellCode ersetzt und nicht als eigenständige Konstante gespeichert

Medium 28. Sep 2009 19:13

Re: Mehrdimensionale Arrays mit Werten beladen
 
Nur als Ergänzung: Typenlose Konstanten werden immer nach dem Motto "find and replace" im Source ersetzt, typisierte dagegen nie. Letztere werden wie Variablen behandelt, nur dass der Compiler - wenn die Option an ist - drauf achtet, dass sie keinen neuen Wert zugewiesen bekommen.

himitsu 28. Sep 2009 19:18

Re: Mehrdimensionale Arrays mit Werten beladen
 
OK, ich dachte wenn man einen Pointer auf eine typlose Konstante bildet, dann wird sie als extra "konstante" gespeichert, aber ich hab's grad getestet und der Compiler läßt sowas (@x) garnicht erst zu.

himitsu 28. Sep 2009 19:21

Re: Mehrdimensionale Arrays mit Werten beladen
 
Zitat:

wenn die Option an ist
joar, $WriteableConst ist schon eine böse Option :evil:


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