überladene Funktionen
Delphi-Quellcode:
function FillString_list(Value: array of string): TStrings; overload;
function FillString_list(Value: array of TCode): TStrings; overload;
oder OperatorOverloading (macht aus dem String ein TCode)
https://docwiki.embarcadero.com/RADS...toren_(Delphi)
Delphi-Quellcode:
type
TCode = record
Wort: string;
Bezeichnung: string;
class operator Implicit(const Value: string): TCode;
end;
function FillString_list(Value: array of TCode): TStrings;
Implicit = automatisch bei Übergabe an Variablen, Parameter oder Property des Zieltyps.
Explicit = ein direkter Cast ala
TCode('ein StringKonstante oder eine StringVariable/Property/FunctionResult')
(der Cast nimmt auch das Implicit, wenn es kein Explicit gibt)
Aber das hier
FillString_list(xxx).Text;
kannst du komplett vergessen, bei deinem aktuellen Design, da es keine automatische Speicherverwaltung für Objekte gibt, ergibt das ein wunderschönes Speicherleck.
-> Interface ala IStrings oder TArray<string> oder einen Record (drin mit einem Array oder als CustomManagedRecord) als Result
-> oder die StringList wird intern gespeichert und durch jemand anderen freigegeben, außerhalb dieser Funktion.
Ansonsten
mußt das TStrings/TStringList in eine Variable speichern und selbst ein Free machen.
Ansonsten sollte man solche Funktionen auch besser so benennen, dass sie das Result "erstellen", damit jeder gleich weiß, dass er es freigeben muß. (z.B. noch ein Create, Build, Make oder Ähnliches in den Namen)