XE3 - co mne zaujalo a na co si dát pozor

vložil Radek Červinka 4. září 2012 22:12

Jak již jistě víte, další verze Delphi a spol. je na světě. Takže v rychlosti sepíši co mne zaujalo a na co jsem si vzpomněl. Předpokládám, že předchozí článek o XE3 máte už přečtený.

krabice XE3

Ale nejdříve špatné zprávy.

Připadám si trochu hloupě, protože v průběhu vývoje jsem naznačoval, že součástí aktuální verze bude vývoj pro mobily (ARM kompilátor), což bylo určitou dobu pravda, než v důsledku časového presu došlo k vyčlenění do nového produktu Mobile studio, které bude dostupné později během XE3. Více o tom snad prozradí Pawel na semináři (který je mimochodem v Praze skoro úplně zaplněn). Takže Mea Culpa - měl jsem držet hubu. Pořád si ale myslím, že Mobile Studio bude něco vyjímečného - něco, co tady není.

Druhý špatná zpráva je, že BCC64 postavený na novém toolchainu není součástí XE3 a měl by být snad dostupný během měsíce nebo tak. Pevně tomu věřím. Takže Mea Culpa podruhé.

Třetí špatná zpráva je, že Barry Kelly opouští Embarcadero. V odkazovaném článku píše důvody, v podstatě dlouhá doba vzdálené práce a ztráta lásky v Delphi (byl velkým zastánce garbage collectoru, RTTI, a dalších věcí). Je mi to moc líto, protože třeba výhody a jak je důležité RTTI mnoho lidí dodnes nepochopilo. Za hodně změn v XE3 může právě Barry, a je mi jasné že ne všechno se hardcore Delphi programátorům bude líbit (třeba už naznačený TStringHelper nebo budoucí ARC). Takže ať se daří Barry.

Další nepříjemné věci:

  • těsně před vydáním někoho inteligentního napadlo, že by to chtělo novou ochranu před kopírováním, a tak všechny DLL v \bin se při startu ověřují. Má to dva háčky: za prvé se trochu opozdí start ale hlavně jakékoliv DLL v bin musí být podepsané jinak se Delphi prý nespustí.
  • floating VCL form designer je v XE3 schován (nějak přes registry se dá ukázat). FMX ho nepodporuje vůbec. Já osobně ho nepoužívám. Jinak "HKEY_CURRENT_USER\Software\Embarcadero\BDS\10.0\Form Design" a nastavit "Embedded Designer" na False.

Ale pojďme k pozitivnějším věcem.

Těsně před vydáním se EMBT snažilo změnit licenci profesional, ale nakonec od toho upustilo a licence je stejná jako XE2. Instalace je rychlejší a pokud uděláte web install tak na disku mají stažené soubory cca 680M (Delphi). Během instalace se nově upozorňuje na novou verzi Interbase XE3. Jsem nepoučitelný, ale zkusím si tipnout. Představte si, že máte výkonou databázi, která je schopná fungovat jako embedded (podobně jako Firebird) a máte kompilátor pro jiné platformy (iOS, Android). Součástí XE3 má být navíc testovací verze Interbase ToGo (což je ta embedded verze). No já myslím že chápu, kam EMBT míří. Uvidíme jak se k tomu postaví Firebird.

instalace XE3

Další důvod proč je zde screenshot je ten obrázek (asi) kolibříka - prostě se mi líbil.

Kodové jméno XE3 je WaterDragon.

Nové jednotky

Je jich mnoho, ale doporučuji System.Sqlite - což OSX kompatibilní wrapper pro SQLite a System.Sensors, který obsahuje implementaci pro sensory (GPS atd.).

Helpery

Ohledně toho TStringHelper: existují i další helpery (double, extended), všechny definované v SysUtils (nebo aspoň ten první). Pokud máte v uses SysUtils, můžete např. k stringu přistupovat jako v .NET. Podle mne je to moc hezké. Jinak může být aktivní jen jeden helper pro daný datový typ v rámci jednotky. Ale můžete si nadefinovat vlastí helper pro libovolný datový typ.

Syntaxe je podobná jako u helperu:

TStringHelper = record helper for string
….
end;

Např. jedna z metod (direktiva je tam jen na jednou)

{$ZEROBASEDSTRINGS ON}
function TStringHelper.IndexOf(Value: Char; StartIndex, count: Integer): Integer;
begin
  Result := System.Pos(Value, Self, StartIndex + 1) - 1;
end;

Na rozdíl od jistých diskutujících si myslím, že je to důležitý krok, ale nikdo Vás nenutí to používat.

Zajímavé symboly

Ve zdrojácích RTL a spol. lze nalézt např. tyto symboly pro podmíněnou kompilaci:

OTHERPLATFORM, POSIX, LINUX, MACOS, NEXTGEN, AUTOREFCOUNT

NEXTGEN není v dodané verzi XE3 použit a týká se to kompilátoru pro ARM. Pro něj je definován i AUTOREFCOUNT, což určuje, že kompilátor podporuje automatické uvolňování objektů - dále jen ARC (opět ARM a Delphi pro mobily).

ARC

Příkladem může být pro podporu ARC upraven TObject nebo FreeAndNil.

procedure FreeAndNil(var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  TObject(Obj) := nil;
end;
{$ENDIF}

Všimněte si druhé větve, kdy kompilátor vygeneruje kód pro odečet aktivní reference. Jinak tohle je samozřejmě pro kompatibilitu. Kompilátor automaticky zavolá snížení reference např. když lokální proměnná končí. Podobně to již dávno funguje pro řetězce. Moc jsem si s tím nehrál, protože se kompilátor oddělil do Mobile Studia.

Na co si dát pozor a exorcismus Pointeru

{$IFEND} je deprecated, nahraďte za {$ENDIF}

Pokud dědíte od db.pas tak pozor na to, že tam je hodně změn, hlavně ohledně bufferu dat.

FValueBuffer: TValueBuffer; předtím Pointer

a to se táhne všude

Obecně cílem XE3 je mobilní vývoj a jako důsledek je snaha vyhodit pointer ze všeho.

S tím souvisí i zavedení dvou tříd (nebo recordů)

v System.pas - TMarshal
v SysUtils.pas - TMarshaller

Cílem je abstrahovat Pointer. Netýký se Win32 a Win64. Raději praktickou ukázku.

Verze RenameFile v XE2:

function RenameFile(const OldName, NewName: string): Boolean;
begin
{$IFDEF MSWINDOWS}
  Result := MoveFile(PChar(OldName), PChar(NewName));
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
  Result := __rename(PAnsiChar(UTF8String(OldName)), PAnsiChar(UTF8String(NewName))) = 0;
{$ENDIF POSIX}
end;

Verze RenameFile v XE3:

function RenameFile(const OldName, NewName: string): Boolean;
{$IFDEF MSWINDOWS}
begin
  Result := MoveFile(PChar(OldName), PChar(NewName));
end;
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
var
  M1, M2: TMarshaller;
begin
  Result := __rename(M1.AsAnsi(OldName, CP_UTF8).ToPointer, M2.AsAnsi(NewName, CP_UTF8).ToPointer) = 0;
end;
{$ENDIF POSIX}

Všimněte si, že Windows verze zůstala stejná, ale v POSIX (tj. vše od Mac, přes Linux, Android a iOS) je použit TMarshaller, což umožní odstínit přístup do paměti.

Jsou zrušeny globální proměnné CurrencyString atd. Už v XE2 jsou označeny jako deprecated a nahraďte je např. FormatSettings.CurrencyString.

FireMonkey

Knihovna je významně rozšířena. Např.

  • TAction (částečně sdíleno s VCL)
  • FireMonkey Form Inheritance (ale ne TFrame)
  • jeden jazyk pro shadery a jejich kompilátor pro OpenGL a Direct3D
  • On-screen klávesnice pro dotykové windows
  • podpora pro non-client části okna (titulek atd)
  • lepší podpora Layout managementu v FMX
  • vynikající podpora Audio, Video (přehrávání, zachytávání) - interně je na Windows používáno DirectShow, na OSX pro změnu QuickTime
  • senzory
  • atd.

Styly

Ve VCL lepší podpora (NC část okna, prý i Ribbon atd). Ve FMX taky, navíc bitmapové "pixel perfect OS styl" (nezkoušel jsem).

Metropolis

Jakoby podpora Metro rozhraní. Tři módy:

  • Blank Metro application
  • Grid View Metro application
  • Split Pane Metro application

Metro styly:

  • MetroBlack
  • MetroBlue
  • MetroDark
  • MetroGreen

Navíc možnost "one click metro conversion" což provede zhruba:

  • WindowState = wsMaximized
  • BorderStyle = none
  • a otevře Options pro výběr stylu (jak VCL, tak FMX)

Navíc podpora pro "Touch Keyboard"

program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
  Application.Initialize;
  Application.UseMetroStyle;   // Add to use MetroStyle behavior
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Co se jinam nevešlo

JVCL, JCL pro WaterDragon jsou v SVN.

Exe soubory pro designery jsou v "c:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Redist\win32\".

Co je vlastně HTML5 Builder? Viz. odkaz, jinak server část PHP, klientská JS a HTML5 (proč sakra není místo PHP použito Delphi). Následník Rad PHP a spol. Ale vypadá to zajímavě.

Prism je dostupný jen v Rad Studiu, samostatně přes EMBT ne - jen u výrobce. Asi chlapcům z EMBT přetekla trpělivost s tím jak autoři Prism útočí na EMBT.

Pokud upgradujete před 28.9.2012 získáte prý následující software:

Myslím, že první bonus je celkem prima.

Pokračování příště.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

Tagy:

Novinky | Novinky v Delphi

Komentáře

5.9.2012 3:43:34 #

TLama

"Byl velkým zastánce garbage collectoru, RTTI, a dalších věcí. Jak je důležité RTTI mnoho lidí dodnes nepochopilo..." A ono se s ním něco stane ? Odstranit se nedá, protože by se tak trochu nedalo pracovat s instancemi objektů a změnit celkový koncept přístupu k typovým informacím tříd jen tak nejde, už jen protože je na něm závislá spousta už hotových aplikací a byl by to dost podraz. Nebo snad jen vyroste o dalších několik set kilo (extended RTTI) ?

TLama

5.9.2012 9:38:47 #

<z>

jestli toto "{$ZEROBASEDSTRINGS ON}" je default, tak gratuluju k bordelu ve stringach,
doufam, ze na to Delfari pridou driv, nez to zacnou pouzivat ... ale zas prace navic to prepnout

dal by me zajimalo, jestli v POSIX systemech jsou jen ansi jmena, ze se nazev souboru konvertuje

jinak se zda, ze zustavam na Delphi 7 :D

PS: davam nove ochrane den, maximalne dva :)

<z>

5.9.2012 10:30:12 #

Zdeněk Vašků

>>dal by me zajimalo, jestli v POSIX systemech jsou jen ansi jmena, ze se nazev souboru konvertuje
ja myslím, že to je jen přetyp který obsah nekonvertuje (char přetyp versus string přetyp)

Tak bez RTTI to snad ani nejde. Ale ten garbage collector to už bylo moc.

Tak to bude to ochranou, když mi najednou delphi napsalo, že mám nelegální software, fuj. Musel jsem restartovat windowsy a pak to zase fungovalo.

Pořád doufám, že zerobasedstrings jsou jen fatamorgána. Ne, teď vážně, je mi jedno jestli je to 0 nebo 1 koneckonců na 0 a1 to všechno stojí, ale měnit to je blbost. Nové vývojáře to nepřinese, akorát to budou zmatky.

Zdeněk Vašků

5.9.2012 10:33:57 #

Radekc

{$ZEROBASEDSTRINGS ON} je lokálně jen pro ten string helper, ale asi můžeš si to zapnout kde chceš.

RTTI samozřejmě zůstane což je dobře, jen prostě chtěl i další věci, které komunita nepřijala.


Radekc

5.9.2012 10:35:12 #

Radekc

RTTI bylo rozšířeno v 2010 a momentální stav je myslím vyhovující

Radekc

5.9.2012 10:52:13 #

Radekc

>z

Proboha už nechte Delphi 7 umřít. Považuji to za největší brzdu Delphi. Upřímně doufám, že už žádný výrobce komponent nebude Delphi 7 podporovat (tak jak to ohlásil DevExpress - http://community.devexpress.com/blogs/ctodx/archive/2012/07/10/vcl-the-bridge-to-the-future.aspx), jinak se nikdy nepohneme dále a pořád sebou povlečeme kouli ve formě 10 starého SW.

Radekc

5.9.2012 11:01:08 #

JaroB

Neovlivňuje instalace XE3 ještě něco jiného (např. nainstalované nižší verze Delphi nebo .NET runtime atp.)? To se jen tak pro jistotu ptám...

JaroB

5.9.2012 11:26:06 #

Radekc

No .NET runtime je požadován, snažil se i o instalaci DirectX, jinak nevím.

Podívej se do http://docwiki.embarcadero.com/RADStudio/XE3/en/Installation_Notes_for_XE3 sekce Prerequisites

Radekc

5.9.2012 12:14:46 #

bullhead


..."Proboha už nechte Delphi 7 umřít"
+1
Mám (bohužel) ve svém okolí taky pár takových zoufalců (a jsou to většinou ti co si stěžuji "jak je to zkompilované EXE novějšími verzemi Delphi NEPOUZITELNĚ velké") ...sorry, ale jsou to <nakonec jsem to slovo smazal> ...souhlasím, že do Delphi řekněme 2005 jsem jim naprosto rozumněl - ale v roce 2012 už ne ...to je jako dnes programovat ve FoxPro

B

p.s. ...jediné co uznávám je argument ceny - pokud má někdo Delphi 7 koupené a nechce kupovat vyšší verze tak OK ...pořád považuji Delphi za příliš drahé v porovnání např. z Visual Studiem (co poskytuje Delphi navíc nerozporuji)

p.p.s. ...jen tak mimochodem je venku konečně verze 1.0 Lazarusu - jasně, že to nešahá Delphi ani po about obrazovku, ale ze 5-6 let by to mohlo být použitelné udrží-li se současné tempo vývoje (a možná donutí Embarcadero snížit ceny)

bullhead

5.9.2012 12:18:51 #

bullhead

"PS: davam nove ochrane den, maximalne dva :)"
...no ...určitě to sice půjde časem obejít, ale kouknul jsem se do komunity a zatím se o tom vyjadřují velmi, VELMI opatrně - takže to vidím NEJMÉŇE na týdny
B.

bullhead

5.9.2012 16:38:02 #

Leoš

"co poskytuje Delphi navíc nerozporuji"
Aniz tady chci slapat po Delphi, prosim co poskytuje Delphi navic oproti Visual Studio?
Ciste ze zvedavosti.

Leoš

5.9.2012 16:52:00 #

Radekc

Sice je to na flame, ale pro mne:
a) svoboda - můžu dělat co chci na libovolné úrovni programování (potřebuji být na nízké úrovni, OK, chci práskat komponenty OK)
b) nativní vývoj bez závislostí na běhových knihovnách, jednoduchá distribuce
c) knihovna komponent

Každou z těchto věcí v podstatě můžeš dělat ve VS, ale nemůžeš je tam kombinovat. V tom je elegance Delphi. Svoboda, síla a rychlost.

No a pak multiplatformní vývoj.

Radekc

5.9.2012 17:02:29 #

Zdeněk Vašků

b) nativní vývoj bez závislostí na běhových knihovnách, jednoduchá distribuce

na RTM od visual studia jsme dokonce malinko alergický.

Ta multiplatforma jestli se podaří dotáhnou na ideální kombinaci win/mac/linux, tak to bude věc, která už z principu ve VS nebude.

Zdeněk Vašků

5.9.2012 17:36:47 #

JaroB

Dneska se bez frameworku jako je VCL nehneš (nepoužíváš-li bizarnosti typu KOL nebo čistá volání API v konceptu pure concept code). FPC, Lazarus i Delphi s Prism (a dovolím si říct i Kylix) jsou navzájem v určitých věcech kapku - rozdílné. A to nemluvím o určitém zmatení na úrovni frameworku, kdy se každý tvůrce snaží podstrčit uživateli věci, které: a) považuje za dobré|efektivní|skvělé, b) jsou pro něj marketingově zajímavé, c) odlišuje ho to od ostatních (čímž se vědomě vytváří nekompatibilita nebo naopak zámky pro firmware).
Ale když je chytají dušičky, musí se jim krásně zpívat…
Prism se inspirovalo v .NET, takže používá jeho konstrukce a jeho framework, je otázka, jak to přijala komunita. Lazarus stále dobíhá Delphi, a není to jen verzí jeho VCL, ale i motorem, který je pod ním a možná i pojetím. Ale o tom polemizovat nechci.
Faktem ale je, že s každou novinkou jazyka  případně rozmělněním a zavedením věcí odjinud je oslabená původní fasáda Pascalu resp. Delphi a jeho původně dost minimalistický koncept. Některé nové vlastnosti jsou skvělé, některé méně a některé, jako třeba RTL, z různých úhlů pohledů, asi nedoceněné (lze možná říct - jak pro koho?).
V určitých ohledech chybí jednotný pohled právě na VCL (Delphi je pořád IDE + kompilátor + VCL), resp. jeho vazbu na OS. Embarcadero razí framework FireMonkey jako nové komplexní řešení, kam by se měl vrtnout multiplatformní vývoj; připouštím, že některé věci jsou fakt efektní a propracované. Ale stále je to nějaký framework, který vyžaduje kapku jiný způsob práce, výstavby aplikace, nasazení i údržby, i když leží vedle VCL…
Multiplatformní vývoj by byl skvělý, kdyby nebylo potřeba magie na pozadí, kdyby opravdu platilo to „napíšeš jednou a přeložíš na všechno“. Ale kdyby jsou chyby.

A propos, před mnoha lety jsem oceňoval vlastnost, kterou měla IntelliJ IDEA, moc se mi líbilo, že každý nepoužitý identifikátor, konstanta, proměnná nebo funkce po kompilaci oslabila svojí barevnou intenzitu v editoru a tak bylo na první pohled vidět, co je potřeba optimalizovat. S každou novou verzí Delphi se těšívám, že bude obdobná vlastnost jednou v IDE zahrnuta také…

JaroB

5.9.2012 17:55:18 #

Leonell

OK, díky.
Tak je tam Visual C++ který umí nativní aplikace a zároveň i "managed" dotNET, ale je fakt, že pokud vezmu jako základ nejčastější C#, tak si v C++ dotyčný moc neškrtne. U Delphi je to všechno Pascal, což je výhoda. Jak je to u VC++ s runtimem (viz Zdeňkův příspěvek) nevím, já v tom dělal před pár lety pár pluginů pro X-PLANE, nic velkého, a na problémy jsem nenarazil.
Knihovna komponent (ve významu GUI prvků pro RAD) je tam taky, já vynechal WinForms a měl jsem zkušenosti s WPF a Silverlight. Porovnávat standardní komponenty si netroufnu, ani v jednom případě jsem ty standardní moc nepoužíval. Pravda je, že k Delphi jsem dostal v ceně FastReport, FastCube, dneska tedy dávají TMS grid, což je plus. Na druhou stranu ty komerční sady mají dneska navrch spíše u DotNetu (DevExpress, Telerik ), trochu jsem doufal, že XE2 rozhoupe stojaté vody a XE3 to rozjede a situace se začne otáčet. To první se stalo  - u toho druhého jsem skeptický, ale uvidíme.
Na multiplatformní vývoj slyším velmi výrazně, nám by se to ostatně hodilo, ale nejsem si jist, zda vývoj je u EMBT akcelerován tímto směrem. Programovat mobily nehodlám a pokud bych je programoval, tak v nativním jazyce (a hlavně nativním SDK) těch konkrétních platforem. Ale to je jen můj názor.

Leonell

5.9.2012 17:58:45 #

bullhead

" frameworku jako je VCL nehneš " ...jen bych tedy upozornil, že není Framework jako Framework:

- NET/JAVA - malé EXE a v OS musíš mít "něco" aby to jelo
- VCL/FM - čisté EXE

...VCL bych osobně označil spíše za knihovnu než framework a myslím, že je to tak i obecné chápáno (VCL = Visual Component <b>Library</b>).

B.

bullhead

5.9.2012 18:02:23 #

JaroB

OK, souhlasím, VCL je prostě takový (fakt hustý a) velký pra-framework :)

třeba takové uniGUI je taky framework "nad" VCL

JaroB

5.9.2012 19:01:18 #

<z>

1) =================
jo, jako novy veci uz nezacinam v D7, ale v D2010 :)
nemuzu si pomoct, XE3 pro me porad neprinasi nic, proc bych musel aktualizovat,
hodil by se mi VCL Mac/Linux cross-compile, bohuzel, toho se nedockam - asi znova vyzkousim Lazarus

... a uznat musite, D7 se drzi :D

... jaka je velikost EXE u prazdneho projektu v XE3? :)


2) =================

by me opravdu zajimalo, kam to Lazarus behem 6 let dotahne xD
jako nastroj zdarma je to cool, ale ted se toho tolik meni, ze to mozna pomre jen tema zasadnima zmenama v systemu a ze lidi budou chtit programovat matlanim po displeji

<z>

5.9.2012 22:30:37 #

Radekc

>Na multiplatformní vývoj slyším velmi výrazně, nám by se to ostatně hodilo, ale nejsem si jist, zda vývoj je u EMBT akcelerován tímto směrem. Programovat mobily nehodlám a pokud bych je programoval, tak v nativním jazyce (a hlavně nativním SDK) těch konkrétních platforem.

No mne se právě líbí jeden zdrojový kód, a to co jsem dělal s Windows a Mac mne celkem ohromilo. Měl jsem multiplatformní SDK pro ovládání HW a tak jsem k tomu dodělal FMX rozhraní a bylo to.

>.. jaka je velikost EXE u prazdneho projektu v XE3? :)
Větší než u XE2, cca 2M :-D

>Lazarus

No dneska Deltics - http://www.deltics.co.nz/blog/?p=1148 se rozplýval nad Lazarem, ale já podle screenshotů jen zíral jak je to pořád pozadu - (a to jsem kdysi do Lazara napsal první verzi TActionList editoru, takže k tomu mám celkem vřelý vztah)

http://www.deltics.co.nz/blog/wp-content/uploads/Screen-Shot-2012-09-04-at-19.42.20-.png

Radekc

5.9.2012 22:37:33 #

Radekc

Ještě k Visual Studio a RTM: Koukni se do c:\Windows\winsxs pak pochopíš.

Ten MS je úplně zbláznil a tohle je to pravé DLL hell...

Radekc

7.9.2012 10:38:46 #

geby

Vidis, a me ten Lazarus podle Screenshotu naopak prisel, ze posledni dobou hodne dohnal. Dokonce mi pripada, ze to IDE s prehledem predci treba D7. (Ktere, k tvuji velke nevoli, spousta lidi dodnes pouziva.)

Tak jsem se na ty stejne obrazky mozna podival spatne. Zkus byt konkretni, co ti na tech obrazcich konkretne prislo, ze je porad pozadu?

geby

7.9.2012 11:19:12 #

Radekc

Geby: já chápu, že si myslíš že za každou cenu propaguji nejnovější Delphi, ale tak to není. Snažím se psát to co se mi líbí a to co je zajímavé a na druhou stranu co se mi nelíbí - jak s tou informací naložíte je Vaše věc. Ano propaguji Delphi, ale přiznám i když se mi něco nezdá.

Já nejsem proti Lazarusu - klidně ho používejte, já jsem rád že se rozvíjí a že je tu alternativa, která snad EMBT donutí srazit ceny.

Mne jen přišlo, že IDE se proti době cca 7 roky kdy jsem s ním intenzivně pracoval a dělal v něm Seksi Commander nijak výrazně nezměnilo, a je pořád na úrovni Delphi 7 + úpravy editoru. Což je pro mne problém. Čekal jsem výraznější změny. Ten screenshot mi přišel takový jakoby z doby x let zpět, navíc vyloženě mám problém s paletou komponent - zrychlené vyhledávání komponent z nových Delphi mi vyloženě chybí i ve starých Delphi.

Nejvíce na nových Delphi oceňuji debugger a překvapivě některé věci z refaktoringu (v podstatě hlavně přejmenování identifikátoru).

Ohledně Delphi 7 - klidně si ho používejte, ale nenuťte výrobce komponent aby nové verze stále podporovali tuto verzi. Jinak se opravdu nikam nepohneme! Stojím si za tím, že Delphi 7 je momentálně největší brzda Delphi. Je to díky tomu jak kvalitní to byl produkt, ale už je to 10 let, což je opravdu v počítačích pravěk. Jinak budeme stále narážet na problém např. unicode v komponentách - viz třeba např. právě Synapse, která je pořád dle stránek: betaversion support for Delphi 2009+, including XE2.

Osobně je ale velký problém třeba z D2007 se vracet k D7 - ale to mi stejně nebudeš věřit. Prostě jsem rozmlsaný. Ale na Delphi mne také x věcí štve, to se neboj.

Radekc

8.9.2012 10:17:07 #

geby

Nepochopil jsem, kde v me prispevku vidis podklady pro tve tvrzeni a propagaci za kazdou cenu. Ja ho tam nepsal, ani jej tam nevidim. Ale uz si zvykam, ze nejak porad vidim neco uplne jineho nez ty.

Ale kdyz jsi to nakousl, tak ja mam spise pocit, ze opevujes kazdou novinku bez nutneho kritickeho pohledu. A tak, kdyz to pak narazi na stareho konzervativce, jako jsem ja, tak proste musim casto nesouhlasit. Ale nic ve zlem. Tak, jako ty nabizis svuj pohled na vec, ja delam preci totez!

Treba ted jsi mi ukazal nejake obrazky z noveho Lazara, a ja tam rozhodne vidim velky pokrok od dob, kdy jsem si s nim hral ja. Ale ty tam napises, ze se nic nezmenilo. Proto jsem to chtel vysvetlit, protoze jsem fakt nechapal, jak to ze mas tak rozdilny pohled na vec. Nakonec z tebe vyleze, ze sis jen predstavoval, ze by ten pokrok mel byt jeste vetsi a ze ti tam chybi nova paleta komponent. (Mimochodem, ta nova paleta komponent, ze ktere nemalo delphi uzivatelu neni nadsena... takze to takove terno asi taky nebude! Ale to jsme zpet u toho tveho nekritickeho pohledu.) Kdybys to takto take rekl, nemel bych sebemensi duvod k namitkam.

Rikas, ze nemame nutit tvurce komponent. Nenutis je nahodou ty? Dovedes si predstavit tvurce komponent, ktery by si lajcnul podporovat jen par poslednich verzi Delphi? Pro ne je klicove podporovat co nejvice verzi Delphi, a prinasi to obrovskou vyhodu i pro uzivatele. krom toho, pro tvurce komponent je dulezita i podpora FreePascalu. A tak ti na mnoho novinek dlabou - protoze musi. A pokud je to novinka, ktera neprinasi nove moznosti, tak je to ani nepali! Napriklad prichod classhelperu neboli vubec nikoho, protoze to co ony dokazi, se vzdycky dalo delat klasickym zpusobem. Kvuli tomu si nikdo bourat kompatibilitu nebude! A jiny priklad - kdyz kdysi prisel int64, nebo kdyz prisel unicode, tak to uz byly nove vlastnosti, kvuli kterym stalo za to tu kompatibilitu se starsimi verzemi rozbourat.

Takze z meho pohledu, nejvetsi brzdou nejsou ti zlodusi, co porad pouzivaji stare Delphi, ale nejvetsi brzdou jsou samotni tvurci Delphi, ze pridavaji blbiny a ne opravdu uzitecne veci, bez kterych by ostatni nedokazali zit. ;-)

A ze bych ti neveril, ze je problem se vracet k D7 z D2007. Vis moc dobre, ze ja si hraju s nejnovejsimi Delphi uplne stejne jako ty. Ale vidim to trochu jinak.

geby

8.9.2012 14:35:15 #

Radekc

Ok, nějak jsem tvůj příspěvek asi špatně pochopil, nějak jsem si to dal do špatného kontexu.

Jen pro upřesnění - ClassHelper se nedá v určitých případech nahradit ničím, např. když chceš zachovat binární kompatibilitu balíčku nebo DCU. Proto taky původně vznikl - zachování binární kompatibility D2006 a D2007.

Možná jsem to špatně vyjádřil, ale osobně si představuji jako nejmenší verzi kterou podporuji D2009, nebo ještě D2007 a hodně výrobců to chápe podobně. Nemyslím si, že každý musí upgradovat na novou verzi, prostě publikuji své poznatky a jak je čtenáři použijí je jejich věc.

>nejvetsi brzdou jsou samotni tvurci Delphi, ze pridavaji blbiny a ne opravdu uzitecne veci, bez kterych by ostatni nedokazali zit. ;-)

S tím zásadně nesouhlasím. Mimochodem opravdu by mne zajímalo, co je podle tebe užitečná věc, která by se měla přidat? Opravdu mne to zajímá.

Z těch podle tebe blbin, co jsou ale podle mne zásadní je to u mne RTTI, unicode, generika, foreach, record helper. To všechno musí tvůrce komponent podporující Delphi 7 nechat být. Ale promiň - to je podle mne opravdu koule na noze. Ale máme na to každý jiný názor.

Radekc

8.9.2012 17:27:40 #

JaroB

Největším problémem je množství placených meziverzí mezi finálními resp. vrcholovými verzemi Delphi, což je dáno marketingovou strategií tvůrců.
Ano Delphi 2005 přineslo mnoho nového, ale mělo technologické zpoždění vůči Delphi 8 .NET a bylo kapku nestabilní. Delphi 2006 přineslo novinky i trochu stability, ale teprve Delphi 2007 se v tu chvíli zdá jako nejstabilnější verze řady, ovšem neoplývalo množstvím novinek, to přineslo na jinou úroveň možná až Delphi 2009, ale spíš 2010 a XE to jen zastabilizovalo. Z tohohle pohledu to lze říct i o XE2 a XE3, ale to minus je právě v tom, že viditelné změny mohou právě tvůrcům komponent napříč všemi verzemi znepříjemnit život, není to jenom o přidávání, ale i o změně jádra a tím i zásahu do kompatibility dávno již odladěných a odzkoušených jednotek (a zrovna takový class helper se jako trojský kůň tvářit může). A to už vůbec nemluvím o jednoročním inovačním cyklu, který není inkrementální, ale pokaždé je to jiný produkt se všemi svými zápory (za klad bych považoval že při koupi XE a následném upgradu na XE2 bych měl možnost targetovat mezi kód/DCU jak na XE, tak na XE2 v jednom upgradovaném IDE, třeba)

JaroB

10.9.2012 11:46:50 #

geby

> Jen pro upřesnění - ClassHelper se nedá v určitých případech nahradit ničím, např. když chceš zachovat binární kompatibilitu balíčku nebo DCU. Proto taky původně vznikl - zachování binární kompatibility D2006 a D2007.

Tak to se priznam, toto jsem nejak nepobral, a vubec nechapu, co jsi tou kompatibilitou vlastne chtel rict? Mozna jsem jen dosud nepochopil, k cemu ze to ma vlastne slouzit?

> Možná jsem to špatně vyjádřil, ale osobně si představuji jako nejmenší verzi kterou podporuji D2009, nebo ještě D2007 a hodně výrobců to chápe podobně. Nemyslím si, že každý musí upgradovat na novou verzi, prostě publikuji své poznatky a jak je čtenáři použijí je jejich věc.

Vsichni vyrobcu resi s kazdou verzi stejne dilema - "Nova verze prinesla novou vec XY. Stoji mi to za to ji pouzit, vymenou za ztracenou kompatibilitu se starsimi verzemi?" je to tedy ciste ekonomicka uvaha. Nikoho nebavi psat X verzi kodu pro nekolik ruznych verzi Delphi. Proto si vyberou nejaku verzi jako zaklad, a na nova vylepseni jazyka kaslou, protoze zpetna kompatibilita se starym kodem fungovala dobre.

Takto to fungovalo krasne, az do D2009, kdy predlouho ocekavany prichod Unicode prinesl faktickou nekompatibilitu. Nekompatibilitu jak fyzickou (neco se muselo prepsat), tak i logickou (nektere kusy kodu postradaji uplne smysl).

A tak ja vidim, ze se spousta vyrobcu rozhodla, ze toto je dobry duvod pro tlustou caru, kde nechaji stavajici kod dozit, a novy delaji uz jen s podporou Unicode, tedy minimalne D2009. To dokazu pochopit. A tak to i vidim u ruznych vyrobcu kolem sebe.

Nicmene, pokud se nekdo rozhodl jeste udrzovat ANSI verze svych komponent, pak nejcasteji vidim prave podporu D7-D2007. Nevidim moc smyslu podporovat jen D2007+, protoze je ekonomictejsi to posoupnout jeste o jednu verzi vyse a zapomenout na to, ze existoval svet pred Unicode.

> Z těch podle tebe blbin, co jsou ale podle mne zásadní je to u mne RTTI, unicode, generika, foreach, record helper. To všechno musí tvůrce komponent podporující Delphi 7 nechat být. Ale promiň - to je podle mne opravdu koule na noze. Ale máme na to každý jiný názor.

RTTI neni blbina. Unicode uz vubec ne (vzdyt na to jsme cekali od D2!). Kdyz kdysi prisly interface, tak to taky nebyla blbina, ale uzitecne rozsireni. Generika take posouvaji vec vpred. Ale treba takovy foreach blbina je. Vse, co dokaze foreach, lze zapsat i normalnim cyklem. Jde jen o pohodlnost, a to jeste jen malickou. Tvurce komponent by byl blazen, kdyby si urizl kompatibilitu se starsimi verzemi jen proto, aby si usetril minimum prace pri psani cyklu. Je to o te ekonomice, aby si kazdy zvazil, jestli mu ta novinka v jazyku stoji za to.

geby

10.9.2012 12:48:47 #

geby

Nicmene uznavam, ze tohle rozebirani je tato diskuze pod clankem moc mala, a nikam to nepovede. Abych osvetlil svuj pohled na vec, to je spise tema rozsahem na cely clanek, ne na diskuzni prispevek.

geby

10.9.2012 13:17:33 #

Radekc

Geby: nemám s článkem problém. Snažil jsem se naznačit svůj pohled v aktuálním článku o verzích a klidně ti dám prostor, stejně jako jiným.

Radekc

11.9.2012 13:10:20 #

bullhead

...jinak vypadá to, že XE3 bude hodně rychle podporovaná verze. Tak rychle (po jednom týdnu!) vyhodit ven oficiálně všechny hlavní balíky (TMS, UNIDAC, Fastreport apod.) to jsem sám překvapen.
B.

bullhead

11.9.2012 23:40:58 #

JaroB

No, mě se podařilo upravit RxLibrary pro XE3 včetně demáčů až dneska :(

JaroB

12.9.2012 22:51:12 #

bullhead

JaroB: "No, mě se podařilo upravit RxLibrary pro XE3 včetně demáčů až dneska :("
...sice RX nepoužívám (ofiko na sourceforge už je dlohou mrtvé že?), ale klobouk dolu před těmi co upravují tyto dávno nepodporované knihovny pro novější Delphi!!!

Mám jednu knihovnu co mi verzi od verze umírá více a více - je taky z 1999:-) Jsou tam všechny HASHe - MD2, MD4, MD5, SHA, SHA1, Ripemd až po320 apod.

Dotaz:
Víte o nečem čím se to dá nahradit? CISTE PAS! Ne Chilkat nebo jak se to jmenuj co všichni doporučují, to je ActiveX(dll)

díky za info

B.

bullhead

12.9.2012 23:05:41 #

Radekc

DCPCrypt? - aktualizováno pro XE2
http://www.cityinthesky.co.uk/opensource/dcpcrypt

Radekc

12.9.2012 23:08:34 #

bullhead

DCPcrypt končí z RipeMD na 160 - zrovna 256tku a 320tku používám mnoho let všude:-(
B.

bullhead

12.9.2012 23:09:55 #

bullhead

DCPcrypt
...a nemá např. GOSTa:-(

bullhead

12.9.2012 23:31:41 #

Radekc

Pak už znám jen LockBox 3
http://lockbox.seanbdurkin.id.au/tiki-index.php

Ale to je spíše tak na pepáka, ten se v sifrovani vyziva - http://www.pepak.net/category/bezpecnost/

Radekc

12.9.2012 23:52:54 #

bullhead

...začínám reálně uvažovat, že bych to poslal "JaroB" a zeptal se kolik si vezme za převod POKUD by vůbec byl ochotný se tím zabývat

...tehdy, koncem tisiciletí, to byla supr zbírka delphi kódů nějaké profesorky z USA co dala na WWW já to jen posbíral a spojil (předpokládám, že dodnes opensource pokud dáma vůbec žije). Co mne na tom děsí, jak verzi od verze tam vždy něco přestane jet. Je tam třeba blok, co JDE zkompilovat DEBUG a NEjde zkompilovat na RELASE a to tam nejsou žádné compilační podmínky. Děsivé:-). 13 let staré kódy no.

B.

bullhead

12.9.2012 23:58:50 #

bullhead

http://lockbox.seanbdurkin.id.au/tiki-index.php
...ani RipeMD ani GOST:-(

http://www.pepak.net/category/bezpecnost/
...ha neznám počtu díky!

B.

bullhead

13.9.2012 0:10:37 #

Radekc

to bullhead> tak to někdo pro zajímavost ulož, uvidíme

Radekc

13.9.2012 0:31:17 #

bullhead

...ta slečna/paní/dáma se jmenuje "Sarah Dean".
...v DOCs mám věci i z 1996 (how)
..aktuální archív co mám pro testy XE2:
http://uloz.to/xyw1FC4/code-hashes-20120912a-7z

B.

p.s. ...co se mi líbilo, narozdíl od ostatních implementací, kde se pořád musel něco "inicializovat" a podobně tohle funguje (možná jsem dělal nějaé úpravy, ale 13ct let je třináct let) geniálně jednoduše:
edit2.text := getHashMD2Str(edtInputSTR.text);
edit3.text := getHashMD4Str(edtInputSTR.text);
edit4.text := getHashMD5Str(edtInputSTR.text);
edit5.text := getHashSHAStr(edtInputSTR.text);
edit6.text := getHashSHA1Str(edtInputSTR.text);
edit7.text := getHashGOSTStr(edtInputSTR.text);
edit8.text := getHashRIPEMDStr(edtInputSTR.text);
edit9.text := getHashRIPEMD128Str(edtInputSTR.text);
edit10.text := getHashRIPEMD160Str(edtInputSTR.text);
edit11.text := getHashRIPEMD256Str(edtInputSTR.text);
edit12.text := getHashRIPEMD320Str(edtInputSTR.text);

bullhead

13.9.2012 9:35:09 #

JaroB

Z ulozto.cz to nedokážu dostat, prosím do e-mailu. Děkuji

JaroB

13.9.2012 12:06:49 #

bullhead

...díky ...poslal jsem ti/vám mail na foru. Z uloz.to mazu.
B.

bullhead

14.9.2012 12:24:56 #

bullhead

Veřejně tady prohlašuji že "JaroB" je polobůh. A rychlý polobůh:-)

B.

p.s. ...a někdy si udělám jeden den čas a zjistím, co těch 120 změn co v knihovně z roku 1999 (co udělal za dvě hodiny) vlastně znamenají:-)

bullhead

14.9.2012 15:43:12 #

radomirs

Radekc: cas od casu si Lazarus i nainstaluji, jen abych byl v obraze...
... a nehodnotil podle screenshotu ;)
Proto jsem byl mile prekvapen posledni verzi, ktera mi naimportovala moji Delphi XE aplikaci citajici 15K+ radku kodu. Pravda rozpadla diakritika, ADO jsem musel nahradit za ODBC a par drobnosti, ale za dopoledne hotovo.
Cimz u mne Lazarus dost stoupl a podnitil mne k dalsimu testovani. Takze jsem treba nahodou (vcas jsem se nezabrzdil a pouzil Delphi zkratku CTRL+ALT+P) prisel na (Vami drive zminovane) zrychlene vyhledavani komponent.
Samozrejmne sem narazil i na veci ktere mi vadi, prekvapive jich ale neni tolik jak jsem se si puvodne myslel ...

radomirs

19.9.2012 18:30:38 #

bullhead

"<z> PS: davam nove ochrane den, maximalne dva :)"
...tak nakonec dva týdny

bullhead

Komentování ukončeno

Naše nabídka

Partial English version.

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 nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

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.

Anketa

Poslední komentáře

Comment RSS