TStringHelper

vložil Radek Červinka 24. srpna 2012 23:46

Konečně. Allen Bauer na twitteru (mimochodem twitter používá opravdu hodně odborníků) konečně proflákl podle mne nejlepší rozšíření jazyka v XE3 (tady, tady a tady - viz níže).

Record helpery pro jednoduché datové typy, včetně stringu!

Citace:

Delphi XE3 - type TStringHelper = record helper for string…
Let the speculation begin. 

Yes, this works: Writeln('this is a string'.SubString(0, 4)); // outputs 'this' 

As does this: Writeln((X + Y).ToString); 

TStringHelper je definován v RTL.

Všimněte si druhého příkladu. Není tam chyba. SubString(0, 4) - je tam opravdu nula. Podle mne opět ústupek pro lidi z jiných jazyků.

Tagy: ,

Novinky v Delphi

Komentáře

25.8.2012 9:14:59 #

pepak

Uvidíme, co nám o tom řeknou 12. září. Zatím nad tím nebudu moc spekulovat, na to je moc málo informací.

Předběžně můžu říct, že pod "nejlepší rozšíření jazyka" jsem si představoval něco bombastičtějšího, ale třeba správně nedoceňuju, k čemu by se to dalo použít. A nebo dělám chybu, že srovnávám s dřívějšími rozšířeními jazyka - properties, 32 bitů, AnsiStringy, otevřená pole, výchozí parametry, overloading, Unicode, generika, potenciálně jednou FireMonkey, to jsou věci, které považuji za mnohem bombastičtější záležitosti. (A to ani generika nepoužívám, protože je mi líto kompatibility se starými Delphi jen kvůli jednomu ušetřenému Copy-and-paste...)

pepak

26.8.2012 13:54:33 #

Zdeněk Vašků

Tak tohle považuji za velkou chybu:

SubString(0, 4) - je tam opravdu nula.

Zdeněk Vašků

26.8.2012 21:52:10 #

<z>

nebudou zaryti delfari rvat, ze jim to hazi spatny substring? :D

<z>

27.8.2012 17:42:21 #

geby

Nebudou rvat, protoze Delphari tohle pouzivat nebudou. Tohle pouziji Javiste, C#piste... takze nikdo, protoze proc ti by cichali k Delphi? Ne?

geby

27.8.2012 22:59:26 #

<z>

ted zalezi na tom, kde vsude se to tak bude pouzivat ...

protoze pokud to bude jen u tohoto a vsude jinde to zustane stejne,
tak to bude peknej bordel ;)

<z>

29.8.2012 12:18:20 #

Petr Puncman

A to jsem byl rád, že jsem si po letech zvyknul, že stringy v C# začínají od 0 a v Delphi od 1. Doufám, že někdo s podobnou zkušeností ještě před vydáním provede v XE3 změnu.

Petr Puncman

31.8.2012 1:28:11 #

Radekc

>nejlepší rozšíření jazyka
jsem myslel z těch v XE3

Radekc

31.8.2012 10:05:41 #

JaroB

Spíš se to blíží funkcionalitám .NET nebo Java, takže se můžeme dočkat toho, že třeba Double nebo Currency nebo i jiné ordinální typy se dočkají podobných konstrukcí, se všemi důsledky, tedy i s přesunem hromady funkcí a metod (a nejen konverzních) do těchto jako-objektů. Tahle konstrukce 'anystring'.SubString(0, 4) je fakt jak z Javy a možná je jen otázkou času kdy se objeví další podobné "helpery" třeba i pro to Double.

Každopádně tento způsob vyžaduje asi kapku jiný způsob používání parametrů procedur a funkcí a náhledu na základní (nechci říct ordinální) typy, a vlastně i uvažování o programové konstrukci, než v klasickém Pascalu/Delphi za použití profláklých a bezpečně známých procedur a funkcí…

JaroB

31.8.2012 14:09:06 #

Radekc

Pro double je součástí instalace. Helpery jsou v SysUtils. Tj. nic Vám nebrání napsat si vlastní (pokud nebudete mít v uses SysUtils).

Radekc

31.8.2012 14:10:54 #

Radekc

Resp. nikdo Vás to nenutí používat. Klasický přístup zůstane zachován. Je to primárně pro lidi co budou používat Mobile studio, ale mně se to u řetězců líbí a jsem všemi 10 pro.

Radekc

31.8.2012 15:51:37 #

JaroB

à propos, distribuce XE3 začne kdy?

JaroB

31.8.2012 19:44:41 #

Radekc

Plán je příští týden.

Radekc

10.12.2012 22:35:25 #

Daniel Andrascik

Tiez si myslim ze TStringHelper je vynikajuca zalezitost. Teda mozem rovno povedat ze Helpery a Generika (a vo vyssich projektoch i extended RTTI) su zalezitosti koli ktorim nekompromisne opustam spätnu kompatibilitu mojich projektov zo starymi verziami delphi. Myslim si ze pri najblizsom programovani okamzite vytvorim TIntegerHelper.ToString funkciu a nejake dalsie podobne.

Radku, upozornujes ze pri tvorbe vlastneho TStringHelperu nesmies mat v uses SysUtils. Ja som sa s tym trosku hral a nie je to vobec podmienka. Kompilator berie do uvahy ten helper ktory je definovany ako posledny. Dokonca mozes mat v implementation casti viacerych helperov pre ten isty datovy typ. Pouzit ti samozrejme dovoli ten posledny viditelny.

Daniel Andrascik

10.12.2012 22:41:20 #

Daniel Andrascik

Este by som mal otazocku. Ked som tak letmo studoval  TStringHelper vsimol som si ze inline direktivu pouzili ani nie u 1/5 funkcii. Cakal by som teda viac. Zrejme sa tu niekto dost hlbavo rozhodoval medzi rychlostou jednotlivych volani a medzi velkostou vysledneho exe. Alebo je za tym iny zamer, okrem setrenia vyslednej velkosti?

Daniel Andrascik

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců