AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter mit multiplen Typen

Ein Thema von Andreas L. · begonnen am 25. Jan 2024 · letzter Beitrag vom 1. Feb 2024
Antwort Antwort
Seite 2 von 2     12   
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#11

AW: Parameter mit multiplen Typen

  Alt 26. Jan 2024, 08:01
Krass was für eine Auswahl wir mittlerweile in Delphi haben.

-Typloser Buffer
-Variant
-Varianter Record
-TValue aus RTTI (Das sieht mal ultra komvortabel aus)

Nur um das noch mal zusammen zu fassen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Parameter mit multiplen Typen

  Alt 26. Jan 2024, 08:37

Nur dass nicht jemand meint die Liste wäre komplett: es gibt da noch mehr.
Zum Beispiel Klasse mit denen man Daten polymorph abbilden kann. Und am Besten noch interfaces dazu.
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Parameter mit multiplen Typen

  Alt 1. Feb 2024, 17:49
Meine Klasse sieht (gekürzt) so aus:
Delphi-Quellcode:
  TtuString = class(TPersistent)
    // ...
  protected
    procedure SetText(Value: String); virtual;
    function UpdateText(AText: String): TtuString; virtual;
    procedure DoChanged; virtual;
  public
    constructor Create(AText: String = ''); reintroduce; overload; virtual;
    constructor Create(AText: TtuString); reintroduce; overload; virtual;
    // ...
    function IsEmpty: Boolean;
    function IsNotEmpty: Boolean;
    function Count: Integer;
    function Length: Integer;
    // ...
    function Insert(AText: String; APosition: Integer = 0): TtuString; overload; virtual;
    // ...
    function Surround(AText: String): TtuString; overload; virtual;
    // ...
    function Replace(ASearchText: String; AReplaceText: String;
      AReplaceFlags: TReplaceFlags = [rfReplaceAll]): TtuString; overload; virtual;
    function Replace(ASearchText: TtuString; AReplaceText: TtuString;
      AReplaceFlags: TReplaceFlags = [rfReplaceAll]): TtuString; overload; virtual;
    // ...
  published
    property OnChanged: TNotifyEvent
      read FOnChanged write FOnChanged;
    property Text: String
      read FText write SetText;
  end;
Benutzt werden soll die Klasse wie folgt:
Delphi-Quellcode:
var
  Str: TtuString;
begin
  Str := TtuString.Create('Hallo, Welt!');
  try
    // Folgender Aufruf ersetzt zuerst ', Welt!' mit einem Leerstring,
    // fügt dann ein Ausrufezeichen an und stellt dem neuen String
    // drei Unterstriche voran bzw. hängt diese auch an...
    Str.Replace(', Welt!', '').Insert('!').Surround('___');

    // Folgendes gibt aus: '___Hallo!___'
    ShowMessage(Str.Text);
  finally
    FreeAndNil(Str);
  end;
end;
Jetzt möchte ich die Klasse so gestalten, dass auch bereits existierende TtuString-Instanzen an die vielen, vielen String-Manipulations-Methoden (wie bei Replace zu sehen ist...) übergeben werden können.

Ich werde dafür auf die Variante mit TValue von Uwe Raabe zurückgreifen. Ich finde das diese Lösung am ehesten passt. Was meint ihr? TtuString als Record zu definieren und mit diversen "class operator"-Routinen auszustatten, hätte aber auch was...

By the way: Für das verschachtelte aufrufen (.Replace().Insert()...) gibt es einen speziellen Namen. Wie genau heißt dieses Schema oder Prinzip?
Andreas Lauß
Blog

Geändert von Andreas L. ( 1. Feb 2024 um 17:52 Uhr)
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
461 Beiträge
 
#14

AW: Parameter mit multiplen Typen

  Alt 1. Feb 2024, 18:28
By the way: Für das verschachtelte aufrufen (.Replace().Insert()...) gibt es einen speziellen Namen. Wie genau heißt dieses Schema oder Prinzip?
Fluent Interface

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:39 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