AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi function FillString_list(Value: array of [string; TCode])
Thema durchsuchen
Ansicht
Themen-Optionen

function FillString_list(Value: array of [string; TCode])

Ein Thema von ebi · begonnen am 16. Sep 2024 · letzter Beitrag vom 16. Sep 2024
Antwort Antwort
ebi

Registriert seit: 8. Sep 2024
10 Beiträge
 
Delphi 12 Athens
 
#1

function FillString_list(Value: array of [string; TCode])

  Alt 16. Sep 2024, 20:10
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.049 Beiträge
 
Delphi 12 Athens
 
#2

AW: function FillString_list(Value: array of [string; TCode])

  Alt 16. Sep 2024, 20:50
ü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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Sep 2024 um 20:56 Uhr)
  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 12:23 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