Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler bei TStrings (https://www.delphipraxis.net/76461-fehler-bei-tstrings.html)

Dragon27 4. Sep 2006 22:31


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:


  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.
Danke für Eure Mühe!

Andy

Ps: Sorry dass ich da den ganzen Code gepostet habe aber ich weiß nicht an was es liegt :-(

Dax 4. Sep 2006 22:34

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:
Seiten[i].Code := TStringLists.Create;
Seiten[i].Geschichte := TStringList.Create;
Für jedes i, für das ein Element im Array existiert.

3_of_8 4. Sep 2006 22:35

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.

Christian Seehase 4. Sep 2006 22:55

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.

3_of_8 5. Sep 2006 09:49

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