helpers etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
helpers etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Ekim 2012 Pazartesi

Class Helper İle Nesne Oluşturmak

Sınıflardan nesne referansı oluştururken,kodun tekrar etmesi,kodun yönetimini zorlaştırıyor, ve sürekli aynı kodu defalarca yazmak bizi yavaşlatıyor.

 Önce :

var  
 aQuery: TUniQuery;
begin
  aQuery := TUniQuery.Create(Application);
  aQuery.SQL.Text := 'sql kodun';
  aQuery.Execute;
  FreeAndNil(aQuery);
end;
TUniquery sınıfına bir "class extension function" yazıyoruz. Dikkat ederseniz bu sefer nesneye extension function olarak değilde, sınıfa extension function olarak yazıyoruz. O sebeble bu işi daha pratik hale getiriyoruz.


 Sonra :

unit uUniHelper;
interface

uses
  Vcl.Forms,
  System.SysUtils,
  System.Classes,
  Data.DB, 
  MemDS,
  DBAccess, 
  Uni;

type
  TUniQueryHelper = class helper for TUniQuery
  public
    class function CreatefromSQL(aSQL: string): TUniQuery;
  end;

implementation


{ TUniQueryHelper }
class function TUniQueryHelper.CreatefromSQL(aSQL: string): TUniQuery;
var
  aQuery: TUniQuery;
begin
  aQuery := TUniQuery.Create(Application);
  aQuery.Connection := UniConnection1;
  aQuery.SQL.Text := aSQL;
  aQuery.Execute;
  Result := aQuery;
end;

end.
var
  aQuery: TUniQuery;
begin
  aQuery := TUniQuery.CreatefromSQL('sql kodun');
  FreeAndNil(aQuery);
end;

iyi çalışmalar.

10 Eylül 2012 Pazartesi

TDataset ToJSONData

{ İsmail Kocacan }
unit uJsonHelper;

interface

uses

  Data.DB,
  System.SysUtils,
  Data.DBXJSON,
  Data.DBXJSONCommon,
  Data.DBXJSONReflect;

type

  TDatasetJSONHelper = class helper for TDataset
  public
    function ToJSONData: TJSONArray;
  end;

implementation

{ TDatasetJSONHelper }
function TDatasetJSONHelper.ToJSONData: TJSONArray;
var
  jso: TJSONObject;
  jsa: TJSONArray;
  jsp: TJsonPair;
  J: Integer;
begin
  Self.Open;
  jsa := TJSONArray.Create();
  while not Self.Eof do
  begin
    jso := TJSONObject.Create();
    for J := 0 to FieldCount - 1 do
      jso.AddPair(TJsonPair.Create(Fields[J].DisplayName, Fields[J].Value));
    jsa.AddElement(jso);
    Self.Next;
  end;
  Self.Close;
  Result := jsa;
end;

end.
TDataset sınıfına uzanım fonksiyonu olarak yazmamızın sebebi; TDataset sınıfı kullanılarak genişletilen(kalıtılan) üst sınıflarda da,kolayca kullanabilelim diyedir.
 Örneğin ;
 SQLQuery1.ToJSONData;
 ADOQuery1.ToJSONData;
 UniQuery1.ToJSONData;
 BilmemNeQuery1.ToJSONData;

 Şeklinde kullanabilmek mümkün olacaktır.
 Örnek Çıktı
{
 "result":
  [
   {"RID":"3","FIRSTNAME":"serdar","LASTNAME":"sezer"},
   {"RID":"2","FIRSTNAME":"kemal","LASTNAME":"bayat"},
   {"RID":"1","FIRSTNAME":"ismail","LASTNAME":"kocacan"}
  ]
}
Yukarıdaki çıktıyı alabilmek için bir takım düzenlemeler yapmak gerekiyor.Bu düzenlemeleri Datasnap REST Ve JSON Formatı Hakkında konusunda bulabilirsiniz.

27 Ağustos 2012 Pazartesi

Delphi XE3 Helpers

XE3 ile gelen yeniliklerden biride daha önce record'lara ve class'lara yazdığımız uzanım fonksiyonlarını artık temel veritiplerine de yazabiliyoruz.Bu güzel bir durum.Bak şimdi oldu :)
unit Unit1;

interface

uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs;

type
  TDoubleHelper = record helper for Double
    function KareKokAl: Double;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
 sayi:Double;
begin
 sayi:=100;
 ShowMessage(FloatToStr(sayi.KareKokAl));
end;

{ TDoubleHelper }
function TDoubleHelper.KareKokAl: Double;
begin
  Result:=Sqrt(Self);
end;

end.