Discussion:
IStringList und TStrings
(zu alt für eine Antwort)
Matthias Frey
2017-01-28 17:42:09 UTC
Permalink
Hallo,

ich würde gerne eine IStringList verwenden.

Es gibt jedoch Methoden die TStrings erwarten. Bei einer TStringList
ist das ja kein Problem weil die von TStrings abgeleitet ist.

Gibt es da eine elegante Lösung?

Für IStringList verwende ich das Spring4D FrameWork.
IStringList = interface(IList<String>)

Matthias
Hans-Peter Diettrich
2017-01-29 05:31:34 UTC
Permalink
Post by Matthias Frey
Hallo,
ich würde gerne eine IStringList verwenden.
Es gibt jedoch Methoden die TStrings erwarten. Bei einer TStringList
ist das ja kein Problem weil die von TStrings abgeleitet ist.
Gibt es da eine elegante Lösung?
Für IStringList verwende ich das Spring4D FrameWork.
Was stört Dich an TStringList, daß Du unbedingt was anderes verwenden mußt?

Und wenn Spring4D nicht auf TStrings aufsetzt, wäre das ein übler
Design-Fehler. Ansonsten hilft es oft - wenn man drankommt - die
Parameter von böswilligen Funktionen von TStringList auf TStrings
umzustellen.

DoDi
Matthias Frey
2017-01-30 07:55:56 UTC
Permalink
Post by Hans-Peter Diettrich
Post by Matthias Frey
Hallo,
ich würde gerne eine IStringList verwenden.
Es gibt jedoch Methoden die TStrings erwarten. Bei einer TStringList
ist das ja kein Problem weil die von TStrings abgeleitet ist.
Gibt es da eine elegante Lösung?
Für IStringList verwende ich das Spring4D FrameWork.
Was stört Dich an TStringList, daß Du unbedingt was anderes verwenden mußt?
Ich muss nicht unbedingt, will aber.

An TStringList stört mich dass sie keine Referenzzählung hat.
Ich muss selber mich um die Freigabe kümmern, als try finally Free ...
Das ist dann auch besonders gefährlich wenn man eine Liste als Rückgabe hat.
Post by Hans-Peter Diettrich
Und wenn Spring4D nicht auf TStrings aufsetzt, wäre das ein übler
Design-Fehler.
Nein.
IList<T> kennt doch keine anderen Klassen.

Das Problem liegt ja in der RTL/VCL.
Würde man das neu so designen, dann würde ich von einem Design-Fehler
in der RTL/VCL sprechen.
Post by Hans-Peter Diettrich
Ansonsten hilft es oft - wenn man drankommt - die Parameter
von böswilligen Funktionen von TStringList auf TStrings umzustellen.
Die sind ja schon auf TStrings. Und ich komme nicht dran.

Im Moment wrappe ich das halt mit einer weiteren Methode. Dachte halt
es ginge irgendwie eleganter.
Post by Hans-Peter Diettrich
DoDi
Matthias

Loading...