Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array zugriffsverletzung (https://www.delphipraxis.net/16301-array-zugriffsverletzung.html)

Mautstelle 14. Feb 2004 17:18


array zugriffsverletzung
 
halli hallo,

ich als anfänger, kenne den array erst seit kurzem. Jetzt wollte ich mal probieren,
einen Array von einer eigenen Klasse zu machen.

dabei habe ich (beispiel...)

Delphi-Quellcode:
tprobier= class
public
 wert:integer;
end;
die variable natürlich:

Delphi-Quellcode:
var
  test: array[1..6] of tprobier;
dann hab ich eine prozedur "wertefestlegen", die macht das hier:

Delphi-Quellcode:
procedure wertefestlegen;
begin
test[1].wert:=20;
test[2].wert:=43;
test[3].wert:=40;
test[4].wert:=60;
test[5].wert:=80;
test[6].wert:=430;

end;
"wertefestlegen" kommt bei klick auf einen button.

ok, ihr cracks könnt es euch sicherlich schon denken, das da eine speicherschutzverletzung kommt...
was muss ich machen, damit das tut?? danke schon mal im vorraus
----
Und noch eine kleine frage, weiss jemand zufällig was diese grünen geschweiften klammern
machen, wo ein dollarzeichen drin steht??

neolithos 14. Feb 2004 17:24

Re: array zugriffsverletzung
 
Du musst die Klasse zuerst erzeugen.

Delphi-Quellcode:
test[1] := TProbier.Create();
test[1].wert:=20;
Am beseten du erstellst für den Wert einen ctor.

Delphi-Quellcode:
tprobier= class
private
  iWert:integer;
public
  constructor Create(aiWert : Integer);

  property Wert : Integer read iWert write iWert;
end;


constructor TProbier.Create(aiWert : Integer);
begin
  inherited Create;
  iWert := aiWert;
end;
Jetzt ist das möglich:

Delphi-Quellcode:
test[1] := TProbier.Create(20);

Bei beiden gilt aber was man dynamisch erzeugt, muss auch wieder freigegeben werden.

Delphi-Quellcode:
test[1].Free;
oder
Delphi-Quellcode:
FreeAndNil(test[1]);

Mautstelle 14. Feb 2004 17:26

Re: array zugriffsverletzung
 
ahh... gut danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz