Autor Beitrag
hui1991
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Sa 08.12.07 18:50 
Hallo,

ich hab mir gedacht mach ich mal ein wenig mit Arrays Testen und wollte eine eigene Klasse dafür erstellen.
Ich hab mir das ungefähr so vorgestellt:
ausblenden 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
  TMap = class
    procedure CreateMap(zeilen: Integer);
  public
    Map: array of string;
  end;

var
  Form1: TForm1;
  Map1: TMap;

implementation

{$R *.dfm}

procedure TMap.CreateMap(zeilen: Integer);
begin
  setlength(self.map,zeilen);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Map1 do begin
    Create;
    CreateMap(300);
  end;
end;


Leider kommt bei der Markierten stelle ein Error (EAccessViolation). Warum eigentlich?
Anscheinend habe ich irgendwas vergessen :(
Bitte hilft mir =)

MfG
hui1991


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Sa 08.12.2007 um 19:31
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 08.12.07 19:30 
Wenn ich diese komisch with-Anweisung von Delphi richtig sehe, ist diese äquivalent zu:
ausblenden Delphi-Quelltext
1:
2:
Map1.Create;
Map1.CreateMap(300);


Das ist aber falsch, ein Konstruktor wird so benutzt:
ausblenden Delphi-Quelltext
1:
2:
Map1 := TMap.Create;
Map1.CreateMap(300);

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Sa 08.12.07 19:40 
Ah danke für die Antwort,

ich mache diesen fehler immer ^^
Jetzt geht es natürlich ^^

MfG
hui1991
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Sa 08.12.07 20:38 
statt array of String würde ich TStringList verwenden, einfach Count auf 300 und die klasse kümmert sich um den Rest

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Sa 08.12.07 22:44 
Mir würde eine TStringList wenige Vorteile bringen.
Wenn ich die anzahl der Zeilen verkleinern will?
Das ist mit einer TStringList unpraktisch.
Und um so viel mehr muss ich mich auch wieder nicht kümmern.
Wird eh eine Klasse zum Zeichnen ^^
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: So 09.12.07 17:03 
user profile iconhui1991 hat folgendes geschrieben:
Mir würde eine TStringList wenige Vorteile bringen.
Wenn ich die anzahl der Zeilen verkleinern will?
Das ist mit einer TStringList unpraktisch.
...
ausblenden Delphi-Quelltext
1:
StringList.Count := NeueAnzahl;					
Was ist daran unpraktisch?

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!