Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Deklaration von Array?
Yacoon - Do 11.03.04 21:46
Titel: Deklaration von Array?
Hi zusammen,
ich versuche gerade einen Array zu deklarieren, habe jedoch einige Probleme :-)
Kann mir mal bitte einer sagen, was ich falsch mache?
Delphi-Quelltext
1:
| aryInformationen : array[0..14] of Integer := (0,32,64,96,128,160,192,224,256,288,320,352,384,416,448); |
Moderiert von
Peter Lustig: Topic verschoben
catweasel - Do 11.03.04 21:50
Was wird denn als Fehler angezeigt ?
Yacoon - Do 11.03.04 21:52
';' erwartet aber :=' gefunden.
Oder kann es sein, das dies keine gültige Deklaration mehr in Delphi 8 ist?
ErnestoChe - Do 11.03.04 21:53
Hallo,
der Doppelpunkt bei der Initialisierung muss weg.
MFG
- Ernesto .
Yacoon - Do 11.03.04 21:54
Daran hab eich auch schon gedacht, nur leider ist das auch nicht das Problem.
Wenn ich den Doppelpunkt weg nehm und nur noch das = Zeichen habe, bekomme ich folgende Fehlermeldung:
';' erwartet aber '=' gefunden
Anonymous - Do 11.03.04 21:58
So kannst du nur Konstanten delarieren,
ErnestoChe - Do 11.03.04 21:59
Hallo,
dann zeig mal mehr Code. Du musst dann das array auch als const deklarieren.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); const aryInformationen : array[0..14] of Integer = (0,32,64,96,128,160,192,224,256,288,320,352,384,416,448); begin end; |
MFG
- Ernesto -
Anfänger - Do 11.03.04 22:00
Titel: Re: Deklaration von Array?
Ich denke du wolltest deinen Array als Konstante haben. In dem Fall musst du noch "const" davor setzen und aus dem ":=" ein "=" machen.
Yacoon - Do 11.03.04 22:01
ok, aber geht das mit Variablen echt nich?
Anonymous - Do 11.03.04 22:04
Mit globalen Variablen sollte es schon gehen. Welche Delphiversion hast du denn?
Yacoon - Do 11.03.04 22:06
Man stolpert doch immer über so kleine dinge.
Also gehn tut es immer noch nicht.
Delphi-Quelltext
1: 2: 3: 4: 5:
| type MyClass = class (TObject) private const aryDaten = array[0..14] of Integer = (0,32,64,96,128,160,192,224,256,288,320,352,384,416,448); end; |
So, also ich denke verstehen tut jeder was ich möchte.
Es geht aber nicht, bekomme jetzt vom Compiler die Meldung "Ausdruck erwartet, aber ARRAY gefunden"
Einer ne IDee?
Anfänger - Do 11.03.04 22:06
Doch kannst du, nur kommt dann Var statt const davor.
Yacoon - Do 11.03.04 22:07
Verwende D8 und schreibe grad eine KLasse für .NET, aber bekomme immer diese Fehler.
Deswegen habe ich den Thread auch im .NET Forum erstellt.
Yacoon - Do 11.03.04 22:08
Nein, mit var davor bin ich wieder bei dem selben Fehler wie ein paar Beiträge weiter oben
Christian S. - Do 11.03.04 22:09
Zitat: |
Deswegen habe ich den Thread auch im .NET Forum erstellt. |
Ist aber kein .NET-spezifisches Problem, sondern hängt mit Delphi-Language zusammen. Und egal welche Version von Delphi-Language, das gehört hier herein.
Yacoon - Do 11.03.04 22:13
Danke für deine zurechtweisung, wollte ja niemanden auf den Fuß treten.
Da es aber Dinge gibt, die in D8 nun mal anders sind als in den Vorgängerversionen und ich nun mal davon ausgegangen bin, dass das vielleicht auch an der Version liegt, habe ich es ins .Net Forum geschrieben.
Aber is ja nit so wild :-)
Christian S. - Do 11.03.04 22:23
Sorry, wenn das so rüber gekommen ist, aber eine Zurechtweisung sollte es nicht sein. Mehr eine Erklärung.
Aber zum Problem:
Ich habe es unter D7 und D8 ausprobiert: bei
globaler Deklaration geht es so:
Delphi-Quelltext
1: 2:
| VAR aryDaten : array[0..14] of Integer = (0,32,64,96,128,160,192,224,256,288,320,352,384,416,448); |
Yacoon - Do 11.03.04 22:25
Was genau meinst du mit globaler definition?
Wäre halt schon toll, wenn die Variable Bestandteil der Klasse wäre, und nach ausenhin nichzt sichtbar wäre.
Christian S. - Do 11.03.04 22:42
Komisch ... das scheint nicht zu gehen. :? Oder habe ich gerade ein Brett vorm Kopf?
Yacoon - Do 11.03.04 22:43
Gut, dann bin ich nicht der einzigste der glaubt zu spinnen.
Anfänger - Do 11.03.04 23:01
Ich habe zwar keine Lösung, da ich probleme mit der Zugriffsverletzung habe, aber ich denke es dürfte weiter helfen.
Das Problem ist aber noch, dass ich an die Variable nicht heran komme.
Übrigens ich habe mir erlaubt eine Forschleife zu verwenden um die Werte zuzuweisen, was natürlich bei anderen Werten nicht funktioniert.
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:
| type MyClass = class (TObject) aryDaten : array[0..14] of Integer; procedure MyClassCreate; end;
var Form1: TForm1; MyClass1:MyClass;
implementation
{$R *.DFM}
procedure MyClass.MyClassCreate; var I:Integer; begin For I:=0 to 14 do MyClass1.aryDaten[I]:=32*I;
Form1.Canvas.TextOut(10,10,IntToStr(MyClass1.aryDaten[0])); end;
procedure TForm1.FormCreate(Sender: TObject); begin MyClass1.MyClassCreate; end; |
Meinen Fehler weiß bestimmt jemand. :wink:
ErnestoChe - Do 11.03.04 23:32
Hallo,
@Anfänger
Anfänger hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure MyClass.MyClassCreate; var I:Integer; begin For I:=0 to 14 do MyClass1.aryDaten[I]:=32*I;
Form1.Canvas.TextOut(10,10,IntToStr(MyClass1.aryDaten[0])); end; | |
Wieso arbeitest du innerhalb einer Methode mit dem globalen Objekt MyClass1. Das ist nicht Sinn einer Klasse. So sollte es aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure MyClass.MyClassCreate; var I:Integer; begin For I:=0 to 14 do aryDaten[I]:=32*I;
Form1.Canvas.TextOut(10,10,IntToStr(aryDaten[0])); end; |
Der Grund für deine Zugriffsverletzung ist wahrscheinlich, dass du deinem Objekt MyClass1 vorher keine Referenz zuweist:
Delphi-Quelltext
1:
| MyClass1 := MyClass.Create; |
MFG
- Ernesto -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!