Entwickler-Ecke

Sonstiges (Delphi) - [Fehler]: E2016 Array-Typ erforderlich


OhLe - Mi 21.11.07 19:42
Titel: [Fehler]: E2016 Array-Typ erforderlich
Hi,

ich habe folgendes Problem. Und zwar möchte ich über Record eine "DB" für die Schule programmieren..
Jedoch erhalte ich unter Delphi 2005 Personal folgende Fehlermeldung

[Fehler] : E2016 Array-Typ erforderlich


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
var
  Form3: TForm3;
  x : byte;

Type TArtikel = Record
Artnr: String[10];
Artbeschr: String[100];
Preis: String[10];
Vorrat: String[10];
end;

Feld=Array[1..10000of TArtikel;

var Artfeld : TArtikel;

implementation

uses db_verwaltung;

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
x:=0;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
   x:=x+1;
   Artfeld[x].Artnr:=edit1.text;
   Artfeld[x].Artbeschr:=edit2.text;
   Artfeld[x].Preis:=edit3.text;
   Artfeld[x].Vorrat:=edit4.text;
end;


Das witzige ist aber, dass es mit Delphi7 geht aber mit Delphi 2005 nicht....

Danke für eure Antworten


Christian S. - Mi 21.11.07 19:54

Ich bezweifle ganz stark, dass das unter Delphi 7 funktioniert!

Du hast da eine Variable von Typ des Rekords deklariert und willst drauf zugreifen, als wäre es ein Array. Das kann nicht gehen :nixweiss:

//edit: Und mit einem x vom Typ Byte wirst Du auch nicht glücklich, bei einem Array mit mehr als 255 Elementen ;-)


OhLe - Mi 21.11.07 19:57

Ja is ja erstma egal... wie kannsch das aber beheben?


Christian S. - Mi 21.11.07 19:59

:gruebel: Wenn ich schreibe, dass eine Variable als Rekord deklariert ist, die wie ein Array verwendet wird. Als was müsstest Du sie dann stattdessen deklarieren?


OhLe - Mi 21.11.07 20:03

ja hast recht.... hab aufm schlauch gestanden... geht nun... danke


delfiphan - Mi 21.11.07 20:05

Ausserdem sollte Preis von Typ Currency sein und Vorrat und x ein Integer. Das ganze noch in eine Klasse kapseln und die Arraygrösse dynamisch machen.