![]() |
function FillString_list(Value: array of [string; TCode])
Hallo Zusammen,
kann man eine Function mit variablem Übergabe-Parameter entwickeln?
Delphi-Quellcode:
type
TCode = record Wort: string; Bezeichnung: string; end; TSteuerung = class const Ebene: array [1 .. 3] of string = ('G17', 'G18', 'G19'); public Name: string; Nullpunkt: array of string; Parameter: array of string; Wegbedingung: array of TCode; Schaltfunktion: array of TCode; TAdresse: array of TCode; constructor Create; overload; constructor Create(Value: string); overload; end;
Delphi-Quellcode:
function FillString_list(Value: array of string): TStrings;
var list: TStrings; begin list := TStringList.Create; for var I := 0 to Length(Value) - 1 do list.Add(Value[I]); result := list; end;
Delphi-Quellcode:
FieldByName(MyTableFields[5]).AsWideString :=
FillString_list(TSteuerung(MyObjects[P^]).Parameter).Text; { Schleife ebenfalls an FillString_list(Value: array of ...) übergeben } for var I := 0 to Length(TSteuerung(MyObjects[P^]).Wegbedingung) - 1 do liste.add(TSteuerung(MyObjects[P^]).Wegbedingung[I].Wort); FieldByName(MyTableFields[6]).AsWideString := liste.Text; liste.clear; |
AW: function FillString_list(Value: array of [string; TCode])
überladene Funktionen
Delphi-Quellcode:
oder OperatorOverloading (macht aus dem String ein TCode)
function FillString_list(Value: array of string): TStrings; overload;
function FillString_list(Value: array of TCode): TStrings; overload; ![]()
Delphi-Quellcode:
Implicit = automatisch bei Übergabe an Variablen, Parameter oder Property des Zieltyps.
type
TCode = record Wort: string; Bezeichnung: string; class operator Implicit(const Value: string): TCode; end; function FillString_list(Value: array of TCode): TStrings; Explicit = ein direkter Cast ala
Delphi-Quellcode:
(der Cast nimmt auch das Implicit, wenn es kein Explicit gibt)
TCode('ein StringKonstante oder eine StringVariable/Property/FunctionResult')
Aber das hier
Delphi-Quellcode:
kannst du komplett vergessen, bei deinem aktuellen Design, da es keine automatische Speicherverwaltung für Objekte gibt, ergibt das ein wunderschönes Speicherleck.
FillString_list(xxx).Text;
-> 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) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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