![]() |
Fehler bei TStrings
:wiejetzt: Hallo,
ich habe ein Problem bei den Tstrings. Scheinbar kann ich ihnen nichts zuweisen :-(! Ich bekomme bei folgendem Code immer eine Zugrifsvereltzung (Stelle mit Kommentar gekennzeichnet):
Delphi-Quellcode:
Danke für Eure Mühe!type TSeite = record name: string; Code: Tstrings; Geschichte: Tstrings; Backgroundcolor:Tcolor; end; var Form1: TForm1; Seiten: array[0..99999] of TSeite; AktiveSeite:integer; implementation {$R *.dfm} Function Tform1.FreieSeite():integer; var i:integer; begin for i:=0 to 99999 do begin if Seiten[i].Name='' then begin result:=i; break; end; end; end; Procedure Tform1.SeitenUpdate; var i:integer; begin Listbox1.Clear; for i:=0 to 99999 do begin if Seiten[i].Name<>'' then begin Listbox1.items.add(Seiten[i].name); end; end; end; Function Tform1.NummerbeiName(Name:String):integer; var i:integer; begin for i:=0 to 99999 do begin if Seiten[i].Name=Name then begin result:=i; break; end; end; end; procedure TForm1.BtnNoteClick(Sender: TObject); var SName:String; Free:integer; begin SName:=inputbox('Seitenname eingaben','Bitte geben Sie hier einen Seitennamen ein:'+#10#13+'Bitte achten Sie darauf, dass kein Seitenname doppelt sein darf!',''); If SName<>'' then begin Free:=FreieSeite; Seiten[Free].Name:=SName; {AB HIER IST DER FEHLER} Seiten[Free].Code.Add('ee'); Seiten[Free].Geschichte.Add('ee'); Seitenupdate; SName:=''; end; end; procedure TForm1.ListBox1Click(Sender: TObject); begin AktiveSeite:=NummerbeiName(Listbox1.Items[Listbox1.itemindex]); Richedit1.Lines:=Seiten[AktiveSeite].Geschichte; Code.Items:=Seiten[AktiveSeite].Code; end; procedure TForm1.FormShow(Sender: TObject); begin AktiveSeite:=-1; end; end. Andy Ps: Sorry dass ich da den ganzen Code gepostet habe aber ich weiß nicht an was es liegt :-( |
Re: Fehler bei TStrings
Du musst auch vorher jedes Objekt erstellen. Am besten in einer Init-Prozedur, die einmal aufgerufen wird.Das bedeutet:
Delphi-Quellcode:
Für jedes i, für das ein Element im Array existiert.
Seiten[i].Code := TStringLists.Create;
Seiten[i].Geschichte := TStringList.Create; |
Re: Fehler bei TStrings
Du solltest die TStrings-Klassen schon auch irgendwo instantiieren...
TStrings.Create geht übrigens NICHT, da das IMHO abstrakt ist. Verwende TStringList.Create. |
Re: Fehler bei TStrings
Moin Manuel,
da TStrings nicht vollständig abstrakt ist, könnte man durchaus mit Intanzen davon arbeiten, auch wenn es nicht empfehlenswert ist. Solange man keine abstrakte Methode aufruft, passiert auch nichts. |
Re: Fehler bei TStrings
Einigen wir uns darauf, dass es nicht empfehlenswert ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 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