AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein T-Array einer Funktion mit TArray<string>-Parameter übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

T-Array einer Funktion mit TArray<string>-Parameter übergeben

Ein Thema von DieDolly · begonnen am 1. Okt 2018 · letzter Beitrag vom 9. Okt 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

T-Array einer Funktion mit TArray<string>-Parameter übergeben

  Alt 1. Okt 2018, 19:06
Ich habe eine Funktion die ein TArray<string> entgegennimmt
Implode(const Delimiter: string; const Values: TArray<string>): string; In einer anderen Funktion würde ich der o.g. Funktion gerne T übergeben
Delphi-Quellcode:
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)));
WriteArray rufe ich so auf
WriteArray<string>('section', 'ident', mein-array); Wie schaffe ich es, Implode das zu übergeben, was es haben möchte?
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
Result := string.Join(Delimiter, Values); Ich glaube ich habs. Statt T muss für Value TArray<T> im Kopf deklariert sein.

Geändert von DieDolly ( 1. Okt 2018 um 19:47 Uhr)
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben

  Alt 6. Okt 2018, 16:01
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. WriteArray<T> geht also nicht, du musst bspw. TArray.Write<T> verwenden.
Und drittens, ist das, was du machen willst, nicht möglich. Das ginge nur über den Umweg mit array of const , indem du das (offene) String-Array in ein offenes untypisiertes Array konvertierst.
Dennis
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben

  Alt 6. Okt 2018, 16:42
Ich habe es gerade noch einmal getestet. Funktioniert einwandfrei.
Lesen, modifizieren, schreiben.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben

  Alt 9. Okt 2018, 01:55
Naja, also exakt so, wie von dir beschrieben, wird es sicher nicht funktioniert haben. Wenn du aber etwas "ähnliches" verwendest, dann eventuell schon.
Dennis
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: T-Array einer Funktion mit TArray<string>-Parameter übergeben

  Alt 9. Okt 2018, 07:53
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.
  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 00:56 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