AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei TStrings

Ein Thema von Dragon27 · begonnen am 4. Sep 2006 · letzter Beitrag vom 5. Sep 2006
Antwort Antwort
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Fehler bei TStrings

  Alt 4. Sep 2006, 23:31
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
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Fehler bei TStrings

  Alt 4. Sep 2006, 23:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fehler bei TStrings

  Alt 4. Sep 2006, 23:35
Du solltest die TStrings-Klassen schon auch irgendwo instantiieren...

TStrings.Create geht übrigens NICHT, da das IMHO abstrakt ist.


Verwende TStringList.Create.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fehler bei TStrings

  Alt 4. Sep 2006, 23:55
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Fehler bei TStrings

  Alt 5. Sep 2006, 10:49
Einigen wir uns darauf, dass es nicht empfehlenswert ist.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz