AGB  ·  Datenschutz  ·  Impressum  







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

spring4d: TList<T> in IList<T> konvertieren

Ein Thema von hschmid67 · begonnen am 22. Aug 2018 · letzter Beitrag vom 22. Aug 2018
Antwort Antwort
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
62 Beiträge
 
Delphi 10.4 Sydney
 
#1

spring4d: TList<T> in IList<T> konvertieren

  Alt 22. Aug 2018, 07:54
Hallo zusammen,

vielleicht übersehe ich ja etwas ganz Einfaches, aber ich finde keine Funktion oder auch einen Hinweis dazu im Internet:

Ich habe aus einem Framework, das ich nicht selbst im Griff habe (TMS Aurelius), immer wieder Listen im Format TList<T>. Wie kann ich diese in ihr entsprechendes Gegenüber aus spring4d konvertieren, sodass ich dann ein IList<T> habe? Geht das irgendwie "einfach" oder muss ich alle Items in eine neu erzeugte IList hinzufügen?

Viele Grüße
Harald
Harald Schmid
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: spring4d: TList<T> in IList<T> konvertieren

  Alt 22. Aug 2018, 08:30
System.Generics.TList<T> implementiert Spring.Collections.IList<T> nicht, es implementiert leider überhaupt keine Interfaces.

Dir bleibt nichts anderes übrig als es in eine neue Liste zu übertragen (mache ich auch immer so)


Delphi-Quellcode:
procedure p();
var
   rtlList:   TList<Byte>;
   springList:   IList<Byte>;
begin
   rtlList := TList<Byte>.Create();
   springList := TCollections.CreateList<Byte>( rtlList.ToArray() );
end;
  Mit Zitat antworten Zitat
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
62 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: spring4d: TList<T> in IList<T> konvertieren

  Alt 22. Aug 2018, 08:59
Hallo Günther,

vielen Dank! Das mit dem Argument beim CreateList<T>(Argument) udn dem T.ToArray wußte ich noch nicht. Super, damit kann ich dann alles auf einen Schwung übertragen und muss nicht einzeln jedes Element hinzufügen.

Muss ich denn die TList<T> wieder freigeben, auch die einzelnen Objekte, oder macht das das Interface dann selbst. Anders gefragt, werden die übergebenen Werte kopiert (vermutlich nicht), oder nur die Zeiger übergeben? Dann müsste ich nur TList freigeben und nicht alle Objekte... Stimmt das so? Es würde also so reichen:

Delphi-Quellcode:
procedure p();
var
   rtlList: TList<Byte>;
   springList: IList<Byte>;
begin
   rtlList := TList<Byte>.Create();
   springList := TCollections.CreateList<Byte>( rtlList.ToArray() );
   rtlList.Free;
end;
Viele Grüße
Harald
Harald Schmid
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: spring4d: TList<T> in IList<T> konvertieren

  Alt 22. Aug 2018, 09:09
Das kommt jetzt natürlich darauf an ob du eine Liste von Wertetypen (Bytes, Records, Integers, …) oder nicht gemanagten Referenztypen (TObject) hast.

Die TList<T> welche du aus deiner Bibliothek zurückbekommst wirst du, davon gehe ich mal aus, am besten direkt freigeben. Schau lieber noch einmal in passende Doku von "TMS Aurelius".

Stecken in der Liste jetzt Objekte wirst du die natürlich auch irgendwann freigeben müssen. Es sei denn, du nimmst aus Spring nicht die IList<T> sondern die IObjectList<T> (und dementsprechend TCollections.CreateObjectList<T>(..) nimmst). Die räumt die enthaltenen Objekte auch gleich mit ab wenn man sie freigibt.
  Mit Zitat antworten Zitat
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
62 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: spring4d: TList<T> in IList<T> konvertieren

  Alt 22. Aug 2018, 10:07
Vielen Dank - das hat mir alles sehr viel weiter geholfen und ich hab wieder was bzgl. generische Listen gelernt.
Harald Schmid
  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 15:54 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