Archive for 17. aug. 2011

Delphi XE2 tulekul ja elevus õhus

august 17, 2011

Delphi arendus on ikka saanud tõelise hoo sisse (müügil arvatavasti septembrist) !

Nüüd murtud ka Windows only needus, mis vaevab paljusid tehnoloogiad 🙂 Ntx. .NET ka töötab Maci peal, aga ma eelistan hambaravi ikka suu kaudu…Monoga on lood nagu nad on, pikemas perspektiivis näen hääbumist.

Asume siis asja juurde, siin blogis on ära loetletud kõik uuendused (ka C++)

http://blogs.embarcadero.com/davidi/2011/08/14/41124/

Märksõnad, mille peale suunurgad tõusid ülespoole… DEFINE naeratus

* Delphi 64-bit compiler
* Delphi OS X compiler
* FireMonkey

Ehk on saabunud aeg, kus Delphi abil saab “inimlikult” Macile rakendusi progeda -:)

Et siis Firemonkey: nimi natuke naljakas, aga üldiselt on see üks Hiina tähtkujudest. Tegelt on see DXScene / VxScene edasiarendus. Paremini seletades on ta nagu “WPF aplikatsioon”; kasutab DirectX / OpenGL visuaalse poole loomiseks. Ütleme nii, et need rakendused tõesti ilusad ja tänapäevased !

Nagu mõistnud, siis Firemonkey töötab neil kenasti ka Mac all. Sain südamerahu tagasi, varem räägiti, et Delphi läheb arenduses edasi Qt peal, see oleks olnud ikka tõeline tagasiminek.

Ka VCL ei ole kuhugi kadunud, Windowsis kõik nagu varem ja kindlasti parem 😉

Firemonkey all huvitab mind tõsiselt, et kuidas nad TDBGridi ja TStringGridi ülesande lahendanud.

Seoses 64 bitise kompilaatoriga ma natuke murelik, sest mul osades koodides lõike (Cardinal(TObject))…
tuleks hakata kasutama lahendust NativeUInt(TObject). 64 bitises pole enam pointer 4 baiti, selletõttu NativeInt ja NativeUInt su uued sõbrad !

Delphi XE2 and FireMonkey app on Windows, Mac and iOS
http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios

Natuke juba mainiti, et Android / Linux neil järgmiseks plaanis. Linux ennekõike Androidi pärast.

Native kood = kiirus kiirus kiirus !

Seniks levi lõpp ja järgmise korrani 😉

Advertisements

Delphi: vaatleme klasside uusi võimalusi

august 4, 2011

Nii, nüüd kus olen Delphi XE omanik, pean nentima, et Delphi klasside juures on palju uusi võimalusi tekkinud.
— Võtame koodilõigu ette ja teeme väikese kirjeldamise

program klassid;

{$APPTYPE CONSOLE}

uses
SysUtils;

type

TAclass = class
private
FPorgandid : Integer;
end;

TBclass = class
(* strict private tähendab, et isegi unitis, kus klass paikneb, ei ole võimalik selle klassi muutujat välja kutsuda (klass luuakse create abil samas unitis). Vt allpool näidet *)

strict private
FPorgandid : Integer;
protected

// nüüd ka delphis olemas staatilised muutujad !!

class var FStaatilinemuutuja:integer;
class var FVal : Integer;
// samuti staatilised propertyd !

class functionGetVal: Integer; static;
class procedure SetVal(val: Integer); static;
public

// klasside sees saate nüüd ka konstante hoida !
const Nuudlid = ‘Nuudlid’;
const Hapupiim = ‘Hapupiim’;

// staatiline protseduur, mis kuvab staatilise muutuja väärtust

class procedure kuvaja();
class property val : Integer read GetVal write SetVal;

procedure ytletere;virtual; // tavaline virtuaalne meetod
end;

(* Sealed tähendab, et pärimisahel pannakse kinni TDclassi ei saa enam tuletada klassist TCclass *)
TCclass = class sealed(TBclass)
public

end;

//TDclass = class(TCclass)
// end;

TEclass = class(TBclass)
public
// final välistab järgmise ülekirjeldamise järglasklassis
procedure ytletere;override; final;
end;

(*
TFClass = class(TEclass)
public
procedure ytletere;override; // [DCC Error] klassid.dpr(41): E2352 Cannot override a final method
end;
*)

(*
Struktuur oleks justkui initsialiseeritud “klass”
*)
TStruktuurJustkuiklass = record
Fmuutuja : integer;

public
// struktuuril on constructor…
constructor create(p : Integer); // alati mingit parameetrit vaja
end;

// —————————————

class function TBclass.GetVal: Integer;
begin
result:=FVal;
end;

class procedure TBclass.SetVal(val: Integer);
begin
FVal:=val;
end;

class procedure TBclass.kuvaja();
begin
writeln(self.FStaatilinemuutuja);
end;

procedure TBclass.ytletere;
begin
writeln(‘Tere’);
end;

procedure TEclass.ytletere;
begin
writeln(‘Tere 2’);
end;

constructor TStruktuurJustkuiklass.create;
begin
writeln(‘Initsialiseeriti struktuur TStruktuurJustkuiklass’,p);
end;

// —————————————

(*
procedure TFClass.ytletere;
begin
writeln(‘Tere 3’);
end;
*)

var
pA : TAclass;
pB : TBclass;
pC : TBclass;
pRec : TStruktuurJustkuiklass;
begin
try
pA:=TAclass.Create;
pA.FPorgandid:=123;

pB:=TBclass.Create;
//pB.FPorgandid:=1; (* [DCC Error] klassid.dpr(30): E2361 Cannot access private symbol TBclass.FPorgandid *)

TBclass.FStaatilinemuutuja:=45;
TBclass.kuvaja;

// kutsume välja staatilist propertyd
TBclass.val:=1;
TBclass.val:=TBclass.val+1;
writeln(TBclass.val);

writeln(TBclass.Nuudlid);
writeln(TBclass.Hapupiim);

pRec.Fmuutuja:=45;
pRec:=TStruktuurJustkuiklass.create(45);

readln;

finally
pA.Free;
pB.Free;
end;
end.

Nii sellega lühike ülevaade lõppes…
Järgmine kord üritan kirjutada Generics kasutamisest, “vahendid” mis ikka koodimahtu kõvasti vähendavad.