![]() |
AV bei dynamischen Array
So, habe mal mein Problem von 2 Threads weiter unten stark vereinfacht.
Bei Hinzufügen eines Strings tritt eine Zugriffsverletzung auf, wenn man das Programm schließt.
Delphi-Quellcode:
Aufruf:unit tmp3list; interface type dsatz = record t0 : String[200]; t1, t2 : Integer; end; mp3list = class private items : array of Dsatz; function getcount : Integer; public property count: Integer read GetCount; procedure addsingle(str : String); procedure readsingle(pos : Integer; var str : String); procedure new; end; implementation function mp3list.getcount : Integer; begin result := length ( items ); end; procedure mp3list.addsingle(str : String); begin setlength(items, length(items)+1); items[length(items)].t0 := str; end; procedure mp3list.readsingle(pos : Integer; var str : String); begin str := items[pos].t0; end; procedure mp3list.new; begin setlength(items, 0); end; end.
Delphi-Quellcode:
Projekt:
procedure TForm1.Button1Click(Sender: TObject);
var test : mp3list; begin test.Create; test.new; test.addsingle('bla'); showmessage(inttostr(test.count)); end; ![]() Weiß jetzt hier jemand Rat? Danke schonmal und nen schönen Abend noch! Jaschu |
Re: AV bei dynamischen Array
Hi Jaschu,
Zitat:
Delphi-Quellcode:
Grüße vom marabu
procedure mp3list.addsingle(str : String);
begin setlength(items, length(items)+1); items[High(items)].t0 := str; end; |
Re: AV bei dynamischen Array
Zwei Dinge sind mir aufgefallen:
1) Es ist besser, eigenen Datentypen im Quelltext ein T voranszustellen. Das ist eine sinnvolle Konvention, die den Quelltext leichter lesbar macht. 2) Du möchtest ein Objekt der Klasse mp3list erzeugen, das geht so:
Delphi-Quellcode:
Gruß, teebee
test := mp3list.Create;
EDIT: Achja, ein drittes noch: Du solltest test auch wieder freigeben, sonst ensteht ein Speicherleck. Ist zwar wohl nur experimenteller Code, aber egal... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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