![]() |
T-Array einer Funktion mit TArray<string>-Parameter übergeben
Ich habe eine Funktion die ein TArray<string> entgegennimmt
Delphi-Quellcode:
In einer anderen Funktion würde ich der o.g. Funktion gerne T übergeben
Implode(const Delimiter: string; const Values: TArray<string>): string;
Delphi-Quellcode:
WriteArray rufe ich so auf
procedure WriteArray<T>(const Section: string; const Ident: string; Delimiter: string; Value: T);
begin if (TypeInfo(T) = TypeInfo(string)) then WriteString(Section, Ident, Implode(Delimiter, TArray<string>(Value))) else if (TypeInfo(T) = TypeInfo(Integer)) then WriteString(Section, Ident, Implode(Delimiter, TArray<Integer>(Value)));
Delphi-Quellcode:
Wie schaffe ich es, Implode das zu übergeben, was es haben möchte?
WriteArray<string>('section', 'ident', mein-array);
T kann Integer oder String sein. Ich könnte Implide ja auch generisch machen. Aber dann würde der Code in Implode nicht mehr funktionieren eben wegen desselben Problems wie oben
Delphi-Quellcode:
Ich glaube ich habs. Statt T muss für Value TArray<T> im Kopf deklariert sein.
Result := string.Join(Delimiter, Values);
|
AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben
Also zunächst einmal, kannst du generische Parameter nicht auf einfache Typen beschränken. Eines der Nachteile in Delphi bei den Generics ist die schlechte Definierbarkeit von constraints bei nicht-Klassentypen, die es (bis auf Records) quasi nicht gibt.
Zweitens kannst du Typenparameter nur für Membermethoden deklarieren, nicht aber für globale Funktionen/Prozeduren.
Delphi-Quellcode:
geht also nicht, du musst bspw.
WriteArray<T>
Delphi-Quellcode:
verwenden.
TArray.Write<T>
Und drittens, ist das, was du machen willst, nicht möglich. Das ginge nur über den Umweg mit
Delphi-Quellcode:
, indem du das (offene) String-Array in ein offenes untypisiertes Array konvertierst.
array of const
|
AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben
Ich habe es gerade noch einmal getestet. Funktioniert einwandfrei.
Lesen, modifizieren, schreiben. |
AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben
Naja, also exakt so, wie von dir beschrieben, wird es sicher nicht funktioniert haben. Wenn du aber etwas "ähnliches" verwendest, dann eventuell schon.
|
AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben
Probier es aus. Es funktioniert.
Oben im Aufruf steht nur nicht der Parameter Delimiter drin aber das ist ein Kopierfehler. Vom eigentlichen Code her funktioniert es wunderbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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