Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Variante Records, Strings und 32 bzw. 64 Bit (https://www.delphipraxis.net/177779-variante-records-strings-und-32-bzw-64-bit.html)

Codehunter 27. Nov 2013 10:57

AW: Variante Records, Strings und 32 bzw. 64 Bit
 
Auch wenns jetzt eigentlich in eine andere Richtung geht: Über das Thema Helper-Konstrukte bin ich gestern das erste Mal gestolpert in Form von TGuidHelper. Dann gabs aber Compilergemecker dass man den nicht direkt verwenden könnte.

Meister Google hat aber zum Thema "Delphi Record Helper" gestern Abend nur Bullshit ausgespuckt. Heute früh hier im Büro liefert er mit dem selben Suchbegriff aber gleich das richtige Emba-Wiki. Schon seltsam dieser Gockel und echt launisch ist er geworden ;-)

himitsu 27. Nov 2013 12:19

AW: Variante Records, Strings und 32 bzw. 64 Bit
 
In ganz neuen Delphis kann man jetzt scheinbar auch Helper direkt an die generischen Typen (Integer, String, Variant, ...) hängen.

Ich glaub in XE5 hatte ist jetzt sowas gesehn:
Delphi-Quellcode:
var
  i: Integer;

i := 5;
ShowMessage(i.ToString);

Codehunter 27. Nov 2013 14:38

AW: Variante Records, Strings und 32 bzw. 64 Bit
 
Lach, das ist ja bald wie in JavaScript :-D Wann baut Emba die strenge Typisierung dann ganz aus? ;-)

himitsu 27. Nov 2013 16:48

AW: Variante Records, Strings und 32 bzw. 64 Bit
 
Im Prinzip hatte ich mir diese Technik schon so gewünscht.

Also daß man Record-Helper auch an normale Typen bauen kann.

Jetzt kann ich meine Array-Helper-Klasse direkt an die Arrays hängen.
Bis jetzt ist die ja noch extern
Delphi-Quellcode:
TArrayHelper<Integer>.Delete(a, 1);
und nun bräuchte ich nur einen generischen Array-Helper definieren und schon hängt der an dem gewünschten Array. (falls die Generics auch bei HelperKlassen nutzbar sind).

Delphi-Quellcode:
var
  a: array of Integer; // oder TArray<Integer>

a.Length := 13;
a[1] := 123;

a.Insert(4, 456);
a.Delete(1); // um die [1] rauszubekommen müßte man erstmal alle dahinterliegenden Einträge um 1 vorkopieren und dann SetLength(a, Length(a) - 1) machen
Ja, das könnte man auch mit Objekten erreichen, wobei man das Objekt auch noch in ein Interface packen muß, um von der automatischen Speicherbehandlung profitieren zu können.

Jetzt fehlt nur noch, daß man endlich mal die defekte Referenz-Behandlung bei den dynamischen Arrays repariert. (bei Strings funktioniert die ja auch)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.
Seite 2 von 2     12   

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