AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TStringList erzeugt access violation...
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList erzeugt access violation...

Ein Thema von user0815 · begonnen am 20. Nov 2013 · letzter Beitrag vom 20. Nov 2013
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#1

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:26
Weil der Typ nunmal TStrings ist.

[edit] Einfaches Beispiel:
Delphi-Quellcode:
var
  Test: TStrings;
begin
  Test := TStringlist.Create;
  try
    Test.Sorted := true; //Fehler, erst in TStringlist implementiert
    (Test as TStringlist).Sorted := true; //OK
    TStringlist(Test).Sorted := true; //auch OK
  finally
    Test.Free;
  end;
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (20. Nov 2013 um 15:31 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.875 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:35
Zitat:
Wieso muß man casten, wenn man die Liste als TStrings deklariert und als TStringList erzeugt?
Z.B. sind sonst Eigenschaften/Methoden nicht verfügrbar, welche durch TStringList hinzugefügt wurden.
Markus Kinzler

Geändert von mkinzler (20. Nov 2013 um 15:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:38
As I said before
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.875 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:40
As I said before
Was aber mal wieder überlesen wurde.

Ich sollte zitieren, auf was ich mich beziehe. ( Mache ich gleich im Beitrag oben)
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:43
Zitat:
Wieso muß man casten, wenn man die Liste als TStrings deklariert und als TStringList erzeugt?
Z.B. sind sonst Eigenschaften/Methoden nicht verfügrbar, welche durch TStringList hinzugefügt wurden.
Also wurde ich von den oben genannten Quellen falsch informiert. Gut zu wissen. Danke.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#6

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:48
Das stimmt so aber doch auch wieder nicht, bei Properties oder Parametern kann die Deklaration als TStrings ja durchaus wieder sinnvoll sein (mache ich ja auch so gut wie immer so).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#7

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 16:03
Man sollte immer den kleinsten gemeinsamen Nenner nehmen, den z.B. eine Funktion benötigt. Wenn die Funktion auch mit TStrings funktioniert, sollte man auch TStrings als Parameter nehmen, damit man sie mit allen Nachkommen von TStrings aufrufen kann.

Wenn man aber darin etwas von TStringList braucht, z.B. eben Sorted, dann muss man auch diesen benötigten Typ benutzen, da man sonst im günstigsten Fall casten muss, ich ungünstigsten Fall aber einen anderen Nachkommen von TStrings in der Variablen hat. Versucht man den dann zu casten knallt es logischerweise.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.376 Beiträge
 
Delphi 12 Athens
 
#8

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 16:30
Wenn man aber darin etwas von TStringList braucht, z.B. eben Sorted, dann muss man auch diesen benötigten Typ benutzen,
Was dann aber auch wieder der kleinste gemeinsame Nenner wäre.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:46
Weil der Typ nunmal TStrings ist.
Okay, dann hab ich trotz Erzeugung als TStringList nur die Methoden von TStrings. Das will ich natürlich nicht. Die Einwände der oben genannten Quellen sind dann vermutlich Humbug: Angeblich soll es Probleme geben, wenn ich einer TStringList, die auch als solche deklariert wurde, z.B. ein Memo.Lines oder ein ListBox.Items zuweise.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:55
Hi Perlsau,

es kommt halt darauf an...

wenn man die Zuweisung "richtig" macht dann ist das kein Thema, aber ein

Delphi-Quellcode:
var Liste: TStringList;
begin
...

  memo1.Lines := Liste;
end;
oder auch anders rum würde ich persönlich nie verwenden. Das mögen andere anders sehen...

Und auch die Verwendung von TStrings kann man so einfach auch nicht als falsch darstellen: Die VCL macht es doch vor: Die Schnittstelle einer Klasse/Komponente ist sicherlich sinnvoller mit einem TStrings zu deklarieren als mit einer TStringList. Hier hast Du dann für den Anschluss nach außen mehr Möglichkeiten.

Wenn Du andererseits eine sortiere Liste haben willst, spricht schlicht nichts dafür, einen TStrings zu definieren und dann anschließend eine TStringList reinzubuttern und ständig zu casten...

GRüße
  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 08:36 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