Autor Beitrag
patmann2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Mi 11.09.02 09:19 
Hallo
Ich habe eine Globale Variable vom Type TStrings. Wenn ich versuche nun mit ADD Strings darin abzulegen bekomme ich eine Fehlermeldung. Ich habe auch versucht das Ding erstmal zu createn, das geht aber auch nicht. Was muss ich da machen?
In allen Fällen tritt diese Exception auf:
Im Projekt ... ist eine Exception der Klasse EAccessViolation aufgetreten.
Beim Debugen ist mir noch aufgefallen, das diese Variable die ganze Zeit auf NIL steht.
Ich benutze Delphi4

cu Patmann
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Mi 11.09.02 09:24 
Benutze TStringList. TStrings ist nur ein Vorfahre, der nicht beutzt wird. Steht in der OH.

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 11.09.02 09:26 
Hi
Objekte müssen vor der Verwendung mit Create erzeugt werden.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure Sonstwas;
var
  meineListe : TStringList;
begin
  meineListe := TStringList.Create;
  try
    tuwas
  finally
    meineListe.Free;  //Freigeben ist wichtig
  end;
end;

Wenn du das Objekt global verwendest schreibst du Create am besten in FormCreate und das Freigeben in FormClose oder FormDestroy.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Sephiroth
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 102



BeitragVerfasst: Mi 11.09.02 13:46 
Hi,

Bei der Variablendeklaration kann man statt TStringList > TStrings hinschreiben. Das funktioniert auch und somit weiss patman auch wie man TStrings verwendet und trotzdem mit TStringlist arbeitet.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 11.09.02 14:34 
Hi
Zitat:

Bei der Variablendeklaration kann man statt TStringList > TStrings hinschreiben

Versteh ich das so, dass du das so schreiben willst?
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
procedure Sonstwas; 
var 
  meineListe : TStrings; 
begin 
  meineListe := TStringList.Create; 
  ...

Falls nein gilt das was wwerner schon geschrieben hat. TStrings ist ein abstrakter Basistyp.
Falls ja: Solltest du auf keinen Fall machen.
Erstens ist es nicht gerade übersichtlich einen Objekttyp zu deklarieren und ihm dann ein Objekt von einem anderen Typ zuzuweisen.
Zweitens wird deine Stringliste ja damit in ein Objekt vom Typ TStrings gecastet. Bei den Basis-Methoden / -Eigenschaften kein Problem. Aber was passiert mit den Eigenschaften/Methoden die erst von TStringList eingeführt werden? Versuch in dem Beispiel mal die Methode Sort aufzurufen.

Und wenn ich das alles total falsch verstanden hab, nix für ungut :D

Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Mi 11.09.02 19:01 
Hi!
Muss auch noch meinen Senft dazugeben ;)

Wenn die Deklaration :
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure Sonstwas; 
var 
  meineListe : TStrings; 
begin 
  meineListe := TStringList.Create;

lautet, ist der Object-Typ vom Typ TStrings, die Instanz aber vom Typ TStringList. Nur die von TStrings (als abstract/virtual) deklarierten Methoden und von TStringList implementierten Methoden stehen zur Verfügung.
ausblenden Quelltext
1:
meineListe.sort;					

geht nicht.

Mit einem Typcast sind aber auch die Methoden von StringList nutzbar
ausblenden Quelltext
1:
(meineListe as TStringList).sort;					

cu
waba
patmann2001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Mi 11.09.02 19:17 
danke an alle
Das man eine TStringList benutzen muss wußte ich nicht. Klappt aber jetzt
cu Patmann
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 11.09.02 23:36 
Hallo,
patmann2001 hat folgendes geschrieben:
Das man eine TStringList benutzen muss wußte ich nicht. Klappt aber jetzt.

da sollten bei dir immer die Alarmglocken angehen wenn du in der Online-Hilfe was von einer virtuellen abstrakten Kalsse liest. Dann dafst du diese nicht direckt benutzen.

Gruß
Klabautermann