Archive for the “Uncategorized” Category


Soruların doğru cevaplarını öğrenmek için onları delphiye taşıyıp çalıştırmanız yeterli lakin bunu yapmadan önce kodları inceleyerek sonucu kendiniz bulmaya çalışın. Bunun size faydası biraz oop, biraz sanal metodlar biraz statik metodlar ve çok biçimlilik olacak…

Soru-1 Asagidaki programi calistirdigimizda consoldaki cikti ne olur ?
(more…)

Comments No Comments »

Generic nedir ne ise yarar ?
Delphi Highlander surumu ile Delphi for .Net* icin dile eklenen Generic ozelligi artik Win32 icinde mevcut.

Genericler kisaca bazi durumlarda fazladan kod yazmamizin onune gecip bakimi , gelistirmesi daha kolay olan kodlar yazmamiza olanak sagliyorlar. Ornek vermek gerekirse hem integer hem de string veri tipinde elemanlar saklamak istediginiz bir listeye ihtiyaciniz olsun. Genericler olmadan bu isi kotarabilmenizin elbet degisik bir kac yolu mevcut. Mesela listeye eleman eklediginiz metodun hem integer tipindeki verileri kabul eden hem de string tipindeki verileri kabul eden iki farkli metodunu tanimlar ve bunlari da overload olarak isaretlerseniz hedefinize ulasmis olursunuz ya da tip cevrimleriyle ugrasmak istemiyorsaniz ayri ayri siniflar tanimlayarak siniflardan birinde integer veri tiplerini digerinde ise string veri tiplerini saklayabilirsiniz. Iste genericler bu tur durumlarda bizi taklalar atmaktan kurtarip bizim yerimize compilerin takla atmasini sagliyor. Sakladiklari veri tipleri haricinde hicbir farkliligi mevcut olmayan bu iki sinifi ayri ayri tanimlamak biz programcilar icin bosuna zaman kaybina neden oluyor. Genericler ise bu zaman kaybinin onune geciyor. Nasil ki prosedur ve fonksiyonlara duruma gore degisik parametreler degisik sonuclar elde ediyorsak genericler ile birlikte artik sinif tanimlarina da bazi parametreler ekleyip tek bir sinif tanimini farkli veri tipleriyle kullanmamiz artik mumkun.

basit bir ornek vermek gerekirse hem integer tipi ile hem de string veri tipi ile (aslinda butun tiplerle :) ) uyumlu calisabilecek bir sinif tanimlayalim.


TGenericSinifim<T> = Class
  private
    FEleman: T;
    procedure SetEleman(const Value: T);
  protected
  public
  property Eleman:T read FEleman write SetEleman;
End;

...
...

procedure TGenericSinifim<T>.SetEleman(const Value: T);
begin
  FEleman := Value;
end;

sinifimizi tanimladik simdi de nasil kullanacagimizi gorelim.

(more…)

Comments 1 Comment »

  • TObject sinifindaki degisiklikler
  • TObject sinifina yeni eklenen 6 adet metod var.

    
    class function MethodAddress(const Name: string): Pointer; overload;
    function FieldAddress(const Name: string): Pointer; overload;
    class function UnitName: string;
    function Equals(Obj: TObject): Boolean; virtual;
    function GetHashCode: Integer; virtual;
    function ToString: string; virtual;
    

    Bunlardan ilk ikisi olan MethodAddress ve FieldAddress zaten eski delphi surumlerinde de mevcuttu. Delphi 2009 da sadece unicode degisikliginden dolayi String tipinde parametre alan yeni surumleride ilave edilmis o kadar.

    Diger dort metod ise Vcl.net uyumlulugu icin eklenmis. Zira ToString metodunun yaptigi tek sey Classname degerini geri dondurmek.

    
    function TObject.ToString: string;
    begin
    Result := ClassName;
    end;
    

    GetHashCode ve Equals metodlari ise system unitinde su sekilde tanimlanmislar.
    (more…)

Comments No Comments »

iste ilk tiborun uygulamamiz karsinizda :)
bilesen isimlerinden metod isimlerine kadar herşey artık unicode…
Artik butonlara ya da diger nesnelere isim verirken tirsmadan ı,ü,ğ,ş,ç,ö gibi karakterleri kullanabilirsiniz. Biraz fantezik bir kisiyseniz 尔福 gibi harfleri de kullanabilirsiniz :) Tabi biz yine geriye uyumluluk ve free pascal gibi diger pascal derleyicilerle herhangi bir sorun yasamamaniz icin string ifadeler haricinde cok gerekli olmadigi surece ingilizce karakterleri kullanmanizi tavsiye ediyoruz :)


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, CategoryButtons, ScreenTips, RibbonActnCtrls,
  ToolWin, ActnMan, ActnCtrls, Ribbon,shellapi;

type
  TForm1 = class(TForm)
    TürkçeDüğme: TButton; // turkce karakterleri artik
                                    //  bilesen isimlerinde de kullanabilirsiniz.
    Memo1: TMemo;
    delphipeak: TButton;
    procedure TürkçeDüğmeClick(Sender: TObject);
    procedure delphipeakClick(Sender: TObject);
  private
    { Private declarations }
  public
  procedure  德尔福高峰();  // hatta prosedur ve fonksiyonlara
                                    // cince isim bile verebilirsiniz.
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.德尔福高峰;
begin
  //德尔福高峰 -->delphipeak
  ShellExecute(0,'open','http://tr.delphipeak.com',nil,nil,0);
end;

procedure TForm1.delphipeakClick(Sender: TObject);
begin
 德尔福高峰;
end;

procedure TForm1.TürkçeDüğmeClick(Sender: TObject);
begin
  memo1.Lines.Clear;
  memo1.Lines.Add('دلفي (arapca delphi)');
  memo1.Lines.Add('德尔福 (cince delphi)');
  memo1.Lines.Add('Δελφοί (yunanca delphi)');
  memo1.Lines.Add('डेल्फी (hinduca delphi)');
  memo1.Lines.Add('デルファイ (japonca delphi)');
  memo1.Lines.Add('Делфи (rusca delphi)');
end;

end.


tiburon

Comments 7 Comments »

tiburon David amca Tiburón’a yeni eklenen ve gelistirilen vcl bilesenlerinin kullanimini , ozelliklerini gosterdigi videoya bu adresten ulasabilirsiniz.

Bloglardan takip edebildigim kadariyla Tiburon ile ilgili yazilan yazilarda unicodeden cok dile yeni eklenen Anonymous Methodlar tartisiliyor. Ismi gibi kendisininde tam olarak ne oldugu belirsiz :) Genelde herkesin sordugu soru nedir bu Anonymous Methodlar ve kod yazarken bize ne gibi faydalari olacak ?
Anonymous Methodlar bizlere daha onceden yapamadigimiz bir takim ozellikleri sunan ozel bir tip vs degil. Sadece codegear in ileriye yonelik olarak dile ekledigi biir ozellik. Gelecek surumlerde Linq for Delphi , Paralel programlama hatta cross platform ozelliklerinin kolay bir sekilde hayata gecirilebilmesi icin eklenen bir ozellik gibi duruyor daha cok.

videoda ilgimi ceken husus ise TEdit bileseninin PasswordChar ozelliginin gosterilmesi. Bu ozellik uzun suredir TEdit te olan bir ozellik zaten. Bu videoda bu ozelligi neden gostermisler bir anlam veremedim dogrusu.

Comments 3 Comments »

2005 ortalarinda o zamanlar hala bir borland calisani olan Danny Thorpe Delphi 2005 icin Delphi for .NET Compact Frameworks Technology Preview yayinlamisti. Adam Borlanddan ayrildi microsofta gecti , ordan ayrildi google ordan ayrildi tekrar microsofta geçti falan filan feşmekan olaylari cereyan ederken bizde “oh ne guzel , previewi cikti bir sonraki surumde (Delphi 2006) tasarim destegiyle beraber resmi olarak gelir” diye beklerken aradan gecti koca bir uc yil ortada ne Compacti var ne frameworku ne de tasarim destegi. Sadece gecen gun yayinlanan RAD Studio ile CF uygulamasi olusturmak adinda ufacik bir makale. Sanirim CodeGear 2008 de oldugumuzu unuttu ya da 2005 yilinda yayinlanan Compact Frameworks Technology Preview in kaynak kodlarini Danny giderken yaninda goturdu ve CodeGear yeniden basa dondu. Marco (ki kendisine kitap hadisesinden dolayi hala gicigimdir :)) bile Highlander surumunun bu destekle cikacagini saniyordu ama beklentileri suya dustu. Birakin delphi 2006 yi mevcut yol haritasina gore Delphinin 2009 Haziranda cikmasi dusunulen Commodore surumunde bile bu destek mevcut olmayacak.

Bazen burdan CodeGear’a kizinca ise yariyor :) Bir kez daha kizalimda cocun oyuncagina cevirdigi bu compact framework destegini belki o zaman adam akilli bir guncelleme cikarirda Tiburon - Commodore arasinda bir yere sikistiriverir. Bu sefer farkli olarak kizma islemini ben degil bu islerde oldukca basarili olan Engin Jurnal yapsin :)


Hamdi !
Hamdi !
Bagla bana su Nicki , uste al Nicki , baglandin mi ?
Asagiya da tombis David i bagla. Bi firca kayayim ben bunlara. Yeter cok uzattilar bu compact framework olayini. Baglandin mi ? Tamam hamdi sen cekil kenara…
Nick ! Nick ! Ne yapiyorsun sen allah askina ! Hepten isi gucu bosverdin newslerde bloglarda takilir oldun. Bi suru insan sizi bekliyor sen blogunda delphi ile gelistirilmis uygulamalarin listesini cikartiyorsun. birak onlari baskasi yapsin sen isine bak. Valla tepemin tasini attirma burdan sana bi korum Vick Vick ote ote eve gidersin.
Al hamdi bunu burdan , al gozum gormesin…
David ! David ! Titre ve kendine gel, eskiden boyle miydin sen ya. Seni abisi diye biraktim ben onlarin basina. Agirligini koy biraz, epey agirsin ama olsun onlara birsey olmaz. Ezilsinler biraz , Hadi kapat kapat. Dinleyemem simdi ben seni. Cabuk bi suru is bekliyor sizi, laf sirasi degil is sirasi.
Hamdi al bu Davidide burdan. Al ! Al ! Gozum gormesin. Gordukce istahim aciliyor.
Evet sevgili seyirciler , sirada ki haberimize geciyoruz.
Gun gecmiyor ki ulkemizde bir gariplik yasanmasin…….

Comments 1 Comment »

Apple iTunes ile meshur olan bir kullanici arabirimi var. Cover Flow 1 , 2 , 3

Elemanin biri bu efekti Delphi 5 ile gerceklestirip Flying Cow adiyla kaynak kodu ile birlikte internete koymus. Beraberinde bircok dosya formati icinde destegi eksik etmemis. Jpeg , Gif , Png , Pdf ve bircok video dosyasi.

Elemanin kendi sitesi su an Sayfa Bulunamadi hatasi versede su adresteki forumda butun seyler zaten detaylari ile mevcut.

Uygulamanin derlenmis halini ve kaynak kodlarini ise su adresten indirebilirsiniz.
FlyingCow-2007-11-28-pre-release-tests.rar
FlyingCow-sources-2007-11-28.rar

Uygulamayi derlemek icin gerekli olan ucuncu parti bilesenlere ise yine forum sayfasindan ulasabilirsiniz.
Delphinin hali hazirda destekledigi dosya turleri icin ek bir bilesen yuklemeye gerek yok. Sadece OpenGL ile ilgili olan pas dosyasini eklemeniz yeterli olacaktir.

Bu adreste ise ayni ornekten yola cikarak yapilmis baska bir uygulama var. Bu ornekte golge ve transparan ayarlarini manuel yapabiliryosunuz.

Bu habere kisaca eklemek istedigim not ise sudur. Hakkında “öldü , bitti , tarih oldu” denilen Delphi siz ölmeden asla ölmez. Eger gercekten birseyler yapma hevesiniz varsa birakin delphi 2007 yi Delphi 5 bile bircok ihtiyacinizi karsilayacak guce sahiptir flying Cow orneginde oldugu gibi…

Comments No Comments »

Bu son taşınma olacak. Wordpress Mu’dan kurtulduk. Delphiblog sitesini spammerlara hediye ettik. Wordpress 2.5 sürümüne transfer olduk. Yazıları ve yorumları kurtardık sanırım. Farketmeyebilirsiniz ama domain adı artık delphipeak.com.

Delphi tapınağının zirveye yakın bir yerlerde olduğunu düşünüp delphi’de zirve yapmayı
düşünebiliriz böylece :)

İşin şakası bir yana umarız bu son taşınma olur. İçeriğimiz kadar domain
değiştirdik neredeyse :)

Comments 2 Comments »

Programlarinizi ve veritabanlarinizi artik tescil ettirebilirsiniz. Kultur bakanligi web sitesinde konuyla ilgili formlari bulabilirsiniz. Ne, nasil, ne sartlarlar kimler tarafindan tescil ediliyor su an pek bilgim olmasada Memik Yanik ‘in degisken isimleriyle ilgili sure gelen davasina benzer davalari yakinda sikca gorecegiz sanirim…

ilgili maddeler :

d) Bilgisayar programlarında aşağıda belirtilen bilgiler “text” formatında “unicode” karakterlerden oluşacak şekilde digital ortama kaydedilmiş (DVD,CD-ROM gibi) iki (2) adet kopya olarak verilir:

1) Ticari sırrı olmayan bilgisayar programları söz konusu olduğunda alenileşmiş olsun ya da olmasın bilgisayar programının belirleyici özelliklerini taşıyan (kaynak kodunun ilk yirmi beş ve son yirmi beş sayfası; eğer elli sayfadan az ise tümü), herhangi bir araca gerek olmaksızın görülebilecek şekilde, varsa özel işareti ile birlikte çoğaltılmış bir kopya,

2) Ticari sır içeren bilgisayar programları söz konusu olduğunda ilk ve son yirmi beş sayfalık ticari sırlar bloke edilmiş şekilde kaynak kodu veya bloke edilmeksizin ilk ve son on sayfası veya amaç kodunun ilk ve son yirmi beş sayfası ile kaynak kodunun herhangi bir on veya daha fazla ardışık sayfası veya elli sayfadan kısa uzunluktaki programlar için ticari sırlar bloke edilerek tüm kaynak kodu,

3) Yeniden düzenlenmiş olan bilgisayar programları söz konusu olduğunda düzeltmeler ilk ve son yirmi beş sayfada yer alıyorsa (2) numaralı alt bentte düzenlenen seçeneklerden biri, değilse; bloke edilmemiş şekilde kaynak kodunun düzeltmelerin de bulunduğu yirmi sayfası veya bazı bölümler bloke edilerek düzeltmelerin yer aldığı elli sayfası.

e) Veri tabanlarında aşağıdaki bilgilerin “XML” formatında dijital ortama kaydedilmiş (DVD,CD-ROM gibi) iki (2) adet kopya olarak verilir:

1) Tek dosyalı veri tabanları (tek bir konuya ilişkin veri kayıtları) söz konusu olduğunda, ilk ve son yirmi beş sayfa, bunun verilememesi durumunda ilk ve son yirmi beş veri kaydı,

2) Birden çok dosyalı veri tabanları (ayrı ve farklı veri kaydı grupları) söz konusu olduğunda hangisi daha azsa her bir dosyadan veya tüm dosyalardan elli veri kaydı, bunun verilememesi durumunda elli sayfa veya tüm veri kaydı,

3) Yeniden düzenlenmiş veri tabanları (tek veya birden çok dosyalı) söz konusu olduğunda elli sayfa veya düzenlemeleri gösteren kayıtlar veya elli sayfadan az ise düzenlenmiş tüm bölümler, şifrelenmiş veri tabanları için tüm bölümler ile şifre açıklaması.

Comments No Comments »

Delphi 2007 de ReportMemoryLeaksOnShutdown adli guzel bir global degisken mevcut. Eger bu degiskene True degeri atarsaniz programi sonlandirdiginizda olusan hafiza kayiplarini cok detayli olmasada gorebilirsiniz… Bu degiskenin diger bir yarari VCL icerisindeki sakat kutuphaneleri gormenize yardimci olur. En basitinden Indy i ele alalim. Indy icerisinde yer alan TIDHTTP bilesenini kullanmayan nerdeyse yok gibidir. TIDHTTP bilesenini kullanmak demek uses satirina IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP unitlerinin eklenmesi demektir.

Simdi yeni bir proje olusturalim.
Project–> View Source kismindan dpr dosyamizin kaynak kodunu acalim.
Application.Initialize; satirinin hemen ustune ReportMemoryLeaksOnShutdown :=true; satirini ekleyelim.


begin
ReportMemoryLeaksOnShutdown :=true;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

Formun uzerine bir adet TIDHTTP bileseni birakalim. F9 ile costuralim. Hicbir islem yapmadan -ki zaten yapacak bir islem yoktur- programi kapatalim. Iste olusan Memory Leak ler karsimizda…

40 byte lik nur topu gibi bir memory leak’imiz oldu :)

Peki idhttp yi form uzerinden silersek olusan bu hafiza kaybindan kurtulabilir miyiz ?
Hemen deniyoruz.


Hayir, malesef kayiplar yine karsimizda cunku uses satirinda ki indy ile ilgili olan unitler hala orada.

Uses satirindaki indy ile alakali olan unitleri elimizle silip yeniden derliyoruz. Denememizi yeniden yapiyoruz. Unitlerle birlikte hafiza kaybida yok oluyor…

Gozume carpan diger bir kutuphane IntraWeb. IWVCLBaseControl unitini uses satirina ekler eklemez 508 byte lik bir memory leak sahibi olmus oluyorsunuz….

Memory leak ‘ ler uzerinde daha fazla denetime sahip olmak icin acik kaynak kodlu Denomo yu kullanabilirsiniz…

Comments No Comments »