![]() |
list<datentyp> auch in Delphi möglich?
Hi,
Ich bin dabei einen C++ Code in Delphi zu übersetzen. Jetzt habe ich das Problem, dass bei den Variablen der Typ List benutzt wird. z.B.
Code:
Die Strukturen habe ich bereits in Delphi übersetzt; kein Problem.
list<NetMessage> mIncoming; //NetMessage ist eine Struktur
list<EVENT_MESSAGE> mOutgoing; //EVENT_MESSAGE ist eine Struktur Aber ich frage mich jetzt ob ich für jede Liste eine neue Klasse schreiben muss? Geht es nicht einfacher? |
Re: list<datentyp> auch in Delphi möglich?
in den neueren Delphi-Versionen ja
nennt sich ![]() aber bislang hat es noch einige Macken (siehe einige Posts, auch von mir), was sich aber mit dem letzen Update von Delphi2009 etwas gebessert hat und SOLL sich angeblich in Delphi2010 (welches demnächst kommt) wesentlich verbessert haben ... mal sehn |
Re: list<datentyp> auch in Delphi möglich?
Das scheinen typisierte Listen zu sein. Delphi unterstützt diese seit Version 2009, Stichwort "Generics".
Wenn es vorerst "nur" darum geht, weiter zu kommen, nimm doch eine klassische TList, die ist zwar nicht typisiert, aber als allgemeine Liste durchaus brauchbar und Du musst - sofern Du kein Delphi 2009 hast - keine neuen Klassen mit spezialisierten Gettern & Settern schreiben (oder zumindest nicht sofort). |
Re: list<datentyp> auch in Delphi möglich?
Gab es nicht auch noch ein Plugin von jbg, dass generics bei einigen Delphiversionen nachrüstet? :gruebel:
|
Re: list<datentyp> auch in Delphi möglich?
Ja die DlangExtensions, diese waren aber, wenn ich mich erinnere "experimentell"
|
Re: list<datentyp> auch in Delphi möglich?
Ich habe mal eine TList ausprobiert. Dabei
habe ich aber gemerkt, dass die Variablen, von denen ich Pointer in die Liste speichere, global sein müssen, was ich nicht sehr prakisch finde. Deshalb hab ich ein bisschen gesucht und die TClassList gefunden. Könnt ihr mir ein paar Links posten, die sich mit TClassList beschäftigen? //Ups hab mich wohl geirrt. Ich dachte bei einer TClassList könnte man eine Klasse festlegen und von diesem Typ sind dann die Items |
Re: list<datentyp> auch in Delphi möglich?
Zitat:
falls es sich in der Variable nicht um einen Pointertüp handelt, dann einfach per New speicher reservieren, da den Inhalt rein und dieses in die Liste rein |
Re: list<datentyp> auch in Delphi möglich?
Willst Du Objekte in die Listen packen? Wenn ja, bietet sich eine typisierte TObjectList an.
|
Re: list<datentyp> auch in Delphi möglich?
Eine Möglichkeit ist auch, selbst eine Klasse von TList oder TObjectList abzuleiten, dann müsste man auch nicht casten, wenn man diese neue Liste dann verwendet.
|
Re: list<datentyp> auch in Delphi möglich?
Ich habe es jetzt doch mit Generics probiert.
Aber bei dem Folgenden Code bekomme ich einen Fehler:
Delphi-Quellcode:
Wie soll ich sonst das Array mit dem Item vergleichen?
type
List<Vartype> = class private FArray: array of Vartype; public function IndexOf(Item: Vartype): integer; end; function List<Vartype>.IndexOf(Item: Vartype): integer; var i: integer; begin for i := 0 to Length(FArray) - 1 do begin if Item = FArray[i] then //<- Hier kommt der Fehler: [DCC Fehler] ListUnit.pas (109): E2015 // Operator ist auf diesen Operandentyp nicht anwendbar begin Result := i; Exit; end; end; Result := -1; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz