Author Archive

Tabloda tek bir veri saklayacagimi bilsem dahi butun tablolarima ID alani muhakkak eklerim.
Birkac gun once karsima bir tablo cikti ve mukerrer kayitlarin silinmesi gerekiyor. Isin ilginc tarafi tabloda id alani olarak kullanilabilecek bir alan mevcut degil.

Bircok veritabani tarafindan desteklenen RowID ozelligiyle ya da distinct ile yapilan bir select ifadesinden donen degerleri insert ile baska bir tabloya yazarak problemi kolayca cozebilecegimi dusunsemde db2 ‘ da rowid ozelligi bekledigimden farkli calisinca biraz ugrasmak zorunda kaldim. Yeni bir tablo olusturmadan tek bir sql ile isi cozmek kolayima geldiginden ufak bir arastirmayla db2 da ki row_number fonksiyonu ile isimi cozebildim.

TEST3 //tablo adi
===============
TCNO //field adi
11111111111
22222222222
33333333333
11111111111
11111111111
33333333333
33333333333
22222222222
22222222222

delete  from
(SELECT
ROW_NUMBER() OVER (ORDER BY TCNO ASC) AS rownumber , TCNO
FROM TEST3 ) AS TEST_SIL
where TEST_SIL.rownumber >
(select min(TEST_SIL2.rownumber) from (SELECT
ROW_NUMBER() OVER (ORDER BY TCNO ASC) AS rownumber , TCNO
FROM TEST3 ) AS TEST_SIL2 WHERE  TEST_SIL.TCNO = TEST_SIL2.TCNO);

sorguyu calistirdiktan sonra ki tablonun yeni hali.

TEST3
===============
TCNO
11111111111
22222222222
33333333333

Comments No Comments »

Delphi 2007 versiyonu ile birlikte TGifImage adli kutuphane hali hazirda Delphiyle birlikte gelmeye basladi. Isin garip tarafi TImage nesnesine gif uzantili dosyalari yukleyebiliyorsunuz fakat bu gif dosyalariniz hareketli gif dosyalari ise TImage nesnesine bu gif uzantili dosyalari yuklemeniz bu dosyalarin hareket etmesini saglamaya yetmiyor. Gif dosyanizin hareket etmesini saglamak icin sizin de biraz hareket etmeniz gerekiyor.

Yapabileceginiz bazi hareketler su sekilde.

Uses kisminda GifImg uniti yoksa bu uniti ekleyerek ise basliyoruz.

//1.Yol
//tasarim esnasinda TImage bilesenine gif dosyanizi yukleyin ve
//Butonun Clickinde ya da baska bir olayda gifi hareket ettirin.
(Image1.Picture.Graphic as TGIFImage).Animate := True;
//2.Yol
//Gifi calisma zamaninda yukleyin ve hareket ettirin
Image1.Picture.LoadFromFile('xxx.gif');
(Image1.Picture.Graphic as TGIFImage).Animate := True;
//3.Yol
//Gif dosyanizi elle yukleyin ve TImage nesnesine atayin
var
GImage : TGifImage;
begin
GImage := TGIFImage.Create;
GImage.LoadFromFile('GifDosyasi.gif');
GImage.Animate := True;
Image1.Picture.Graphic := GImage;
end;

Gif dosyanizin titreme yapmadan guzel bir sekilde hareket etmesi icin TImage nesnesini bir panelin icine koyun ve panelin doublebuffered ozelligini True yapin.

Gif dosyanizin oynatma hizinda yavaslik ya da hizlilik varsa AnimationSpeed degerini 0 yapmayi deneyin.


(Image1.Picture.Graphic as TGIFImage).AnimationSpeed:=0;

Comments 4 Comments »

TCP/IP ile oldukca fazla hasir nesirseniz ve indy size bu konuda gereginden fazla sorun cikartiyorsa bir de TD-COMMUNICATION FRAMEWORK bilesenlerini deneyin. Kullanimi oldukca basit olan bu bilesen kutuphanesini yogun islemlerinizde gonul rahatligiyla kullanabilirsiniz. Bilesen seti zaten indyden illallah diyen Ferruh Köroğlu tarafindan bu is icin tasarlanmis :)

Comments 8 Comments »

Hangisinin daha once cikacagi , ne zaman cikacagi gibi sorular henuz muallakte olsada bugun biten Delphi Live adli etkinligin sonucunda ortaya cikan bilgiler su sekilde.

Codegear es zamanli olarak 4 tane farkli delphi versiyonu uzerinde calisiyor. Her versiyonun kendine belirledigi birkac miheng tasi mevcut. Bu versiyonlardan hangisinin once hangisinin sonra cikacagi hakkinda bir bilgi mevcut degil. Tek bildigimiz Weaver adli projenin sene ortasinda cikacak olmasi. Digerleride sanirim 2-2,5 yil icinde bizlere sunulmus olur.

Nedir bu versiyonlar sorusuna ise soyle cevap verelim

1-Project Weaver
Bir onceki yazida bundan bahsetmistik. Daha sorunsuz , hatasiz bir ide nin pesindeler bu versiyonla ve araya da bazi ek ozellikler serpistirilmis.

    SVN destegi
    Windows 7 destegi
    Firebird destegi
    Soap 1.2 destegi
    .Net teki Attribute destegi vs.

2-Project X
Bu surum cross platfrom delphinin ilk surumu olacak. Mevcut kodun tamami olmasada sanirim temel vcl siniflari ile yazdiginiz bir programi hem windows hem linux hem de mac icin derleyebileceksiniz.

3-Project Chromium
Bu surumde yine iyilestirmeler uzerine olacak sanirim cunku kalite uzerine epey bir vurgu yapilmis. Bunun yaninda yeni ozellik olarak gordugum en buyuk madde yeni data binding mantigi. Bu surumden sonra sadece veri bilincli olan nesneleri degil (dbEdit, dbGrid vs..) her turlu nesneyi veritabanlarina baglayabilecegiz.

4-Project Commodore
Delphinin 64bit destegini saglayan surum olacak.

Cok parcaya ayrilmis bu yeni surumlerin bize ulasmasi uzun zaman alacakk gibi gorunsede bu surumler uzerinde codegearin zaten es zamanli olarak calismasi sureyi kisaltacak gibi. Benim tahminimce 2-2,5 yil sonra butun surumler piyasaya cikmis olur.

2009 ‘ un ortasinda (temmuz-agustos gibi) Weaver cikar
2010′un basinda (subat - mart gibi) Project Commodore cikar
2010′un ortasinda (temmuz - agustor gibi) Project Chromium cikar
2011 gibi de Project X cikar.

# Project Weaver
    * Main Themes
          o User Experience
          o Enhance Connectivity
          o Documentation
    * IDE usability
    * Team Productivity
    * Touch
    * IDE – Insight (easy Keyboard access to almost everything)
    * Improvements to DataSnap
    * Firebird Support
    * .NET AOP
    * SCM Support
    * Enhanced RTTI Support
    * Attribute Support
    * Seamless .NET <> Native communication
    * Windows 7 APIs and Direct 2D
    * Full Support of SOAP 1.2 Clients

# Project X

    * Cross-platform Windows, Mac OS, and Linux
    * Cross-platform component library
    * DataSnap on all platforms

# Project Chromium, Quality, Quality

    * Quality, Quality, Quality
    * Pascal Code Formatter
    * Documentation of the OTA
    * New Data binding model allowing binding to almost any property on a control
    * More integration with the database tools.

# Project Commodore

    * 64 Bit native
    * Full compiler, RTL and VCL support for 64 native
    * Multi-Core. Multi-threaded applications.

Comments 9 Comments »

Codegear’in Tiburondan sonra cikartacagini duyurdugu Commodore kod adli 64bit destegine sahip yeni Delphi versiyonunu beklerken bir sabah aniden kucagimizda Delphi Weaver i bulduk.  Delphi.org dan haberini aldigimiz bu yeni delphi versiyonun ne gibi yenilikler icerdigi su an icin mechul durumda ama 64bit destegini icermedigini rahatlikla soyleyebiliriz. Yine ufak bazi ipuclarindan yola cikarak bazi tahminlerde bulunmak gerekirse birkac yazi once bahsetmis oldugumuz anket sayfasinda ki sonuclardan yola cikarsak -ki eski Delphi urun yoneticisi  yeni Ar-Ge yoneticisi Nick Hodges , “bu anketi dikkatle izliyoruz” demisti- CodeGear in bu yeni surumde hangi ozellikleri bizlere sunacagini ogrenebiliriz.

Anket seceneklerinden Started , Under Review, Planned olarak isaretlenen seceneklere dikkat edelim. Isaretsiz secenekler ise malesef su an icin CodeGearin gundeminde olmayan secenekler. Bunlar arasinda bizim ekledigimiz RIA Development ve Compact Framework gibi cok onemli maddeler yer aliyordu. Bu ozellikleri delphide gormek icin sanirim epey bir sure daha beklememiz gerekecek. Ar-Ge yoneticisi olan Nick Hodges ten artik bu islere biraz hiz vermesini bekliyoruz…

Biz gelelim Started olarak isaretlenen seceneklere…

64Bit support: 64Bit uzerinde calisiyorlar. Bu zaten bildigimiz bir ozellikti ve Delphi Weaver da olacagini sanmiyorum zira bu ozellik Commodore adli delphi surumunde cikacak.

Web Service support : Web servislerinin iyilestirilmesi. Delphi Weaverda karsimiza cikabilecek muhtemel iyilestirmelerden bir tanesi bu olabilir.

More stability. Nothing worse than D2009 + Update 1 crashing: Bu iyilestirmeler zaten her surumde var. Delphi Weaver de de bu iyilestirmeler muhakkak olacaktir.

Better Help and Documentation: Bir ustte ki madde de soylediklerimiz bu madde icinde gecerli..

Update VCL : Bir ustte ki madde de soylediklerimiz bu madde icinde gecerli..

Improved RTTI : Bir ustte ki madde de soylediklerimiz bu madde icinde gecerli..

Mevcut durum sunu gosteriyor. Delphi Weaver agirlikli olarak VCL ve RTL bazli iyilestirmeler iceren bir surum olacak. Kararlilik olarak delphi aleminde en tepede duran Delphi 7 yi tahtindan indirecek bir surum adayi Delphi Weaver. Iyilestirmeler yaninda CodeGear in urunu satabilmek icin gelistiricilere ne gibi cazip ozellikler sunacagi ise simdilik mechul. Hep birlikte bekleyip gorecegiz…

Comments No Comments »

Ozcan Acar’in Firat Universitesinde ki sunum videosu.
Diger sunum ve dosyalar için http://www.kurumsaljava.tv/

Comments No Comments »

26 Mart ve 2 Nisan tarihlerinde Hamdullah Turgut ‘ un sunumunda gerceklestirilecek iki adet seminerimiz var. Seminerlerin konusu Delphi 2009 ile gelen yenilikler , delphi ile proje yonetimi ve yeni datasnap mimarisi.

26 Mart tarihinde yapilacak olan seminerin saati 14:00 , 2 Nisandaki seminerin saati ise 10:00 olarak belirlenmis. Oncelikle gecen seneki sunumda neler soylenmisti onlari bir hatirlayalim :)

1 Delphinin bir sonraki versiyonuna Firebird icin dbexpress surucusu eklenme ihtimali oldukca yuksek
2 Delphi for Php icin turkce bir kitap hazirlik asamasindaymis
3 Delphi for .net resmi olarak .net 2.0 desteklese de 3.5 ile de sorunsuz bir sekilde calisabiliyormus
4 Web seminerlerinin devami dusunuluyor. tabi kullanicilardan yeterli istek gelirse.

Delphi 2009 da Firebird destegi yok malesef :(
Delphi for php kitabi raflardaki yerini almadi. :(
Delphi for .net zaten öldü :(
Web seminerlerinin devami ise arkasi onumuzdeki yila oldu :(

Bu sekilde ufak bir hatirlatmanin ardindan seminerlere kayit icin bu linki kullanabilirsiniz notumuzu ekleyelim.

***
***

http://delphi.uservoice.com/pages/general/ adresinde programcilarin delphi 2010 da gormek istedikleri ozelliklerinin oylandigi bir anket mevcut. CodeGear anketi yakindan takip ediyor. Bu nedenle sessiz kalmayip olmasini istedigimiz ozellikler icin muhakkak oy hakkimizi kullanalim. Oy kullanmak icin uye olmaniz gerekmiyor. 10 puanlik bir oy hakkiniz var ve bu hakkinizi bir secenege en fazla 3 puan sarti olmakla birlikte istediginiz sekilde kullanabiliyorsunuz. Gelecegi cok parlak olan Rich Internet Application secenegine de oy vermeyi unutmazsaniz sevinirim. Delphinin en cok sevdigimiz ozelligi olan hizli uygulama gelistirme ozelliginin internet ile birlestigini dusunun. Kim tutar sizi :)

Comments 5 Comments »

Http 302 internette karsimiza bolca cikan ama bizim farkina bile varmadigimiz yararli bir durum kodu. Istekte bulundugumuz bir web sayfasi artik baska bir adreste yayin hayatina devam ediyorsa sunucu geriye 302 durum kodu ile birlikte sayfanin yeni adresini bize gonderir ve gunumuzde kullandigimiz browserlarin tamami 302 durum koduyla karsilastiklari zaman bizi otomatik olarak yeni sayfaya yonlendirme becerisine sahip olduklarindan zavalli 302 tam bir gorev adami olarak sohretten yoksun bir sekilde isini sessiz sedasiz yapmaya devam eder.

Biz bu makalede TIdHTTP ile 302 durum kodunu hangi sekillerde yonetebilecegimizi kiyisindan kosesinden anlatmaya calisacagiz. Ise baslamadan once 302 durum kodu gonderen bir sayfa bulmamiz gerekiyor. Ben bunun icin FeedBurner servisini kullanan Yemek Tarifleri adli siteyi kullanmayi uygun buldum. Ne de olsa Delphiciler midelerine duskun olmakla aleme nam salmislar :)
(more…)

Comments 1 Comment »

Delphi, dilin adımı yoksa Object Pascal kullanarak yazılım geliştirmemizi sağlayan IDE nin adı mı, Object Pascal’ın bir dialekti mi tartışmaları süre dursun biz biraz Delphi ile Java arasındaki yazım kurallarını irdeleyelim. Hazır Delphi derleyicisinin yeniden yazılma kararı alındığı şu günlerde belki bizim yazımızı da dikkate alanlar olur. :) Tabi öncelikle şu yazıyı bitirip hayırlısıyla Publish düğmesine basmam gerekiyor zira yazının sonuna ekleyeceğim Google Translate linkinden dolayı normalde pek az kullandığım türkçe karakterlere ve imla kurallarına biraz daha fazla dikkat etmem gerekiyor. Çevirisi pekte başarılı olmayan Google ‘a birazcık yardımcı olmak lazım.

Delphi ve Java arasındaki iyi kötü tarafları söylemeden önce şunu belirtmek istiyorum. Her iki dilinde ortak bir çok yanı bulunmasına rağmen aralarında kullanıldıkları sektör açısından oldukça büyük farklar bulunmaktadır. Delphi daha çok Win32 tabanlı masaüstü programlamada kullanılmaktadır Java ise web tabanlı kurumsal projelerde daha çok tercih edilmektedir. Kısaca bu yazının amacı, uzmanlık alanları farklı olan bu iki dil hakkında Delphi Javadan iyidir ya da Java Delphiden iyidir konusundan daha çok her iki dilinde bana göre artılarını ve eksilerini burda dile getirip her iki dil içinde gelecekte daha programcı dostu bir dil olabilmelerine katkı sağlamaktır.

Bu girişten sonra madde madde aklıma gelen unsurları yazmaya başlayalım.

  • Parantez ve Begin - End
    C,C++,Java ve daha birçok programlama dilinde kullanılan parantezler bana gore hiçte programcı dostu unsurlar değildir. Pascal in kod bloklarını ayırmak için kullandığı Begin - End blogu bana göre çok daha anlaşılır ve kafa karıştırıcı olmaktan uzaktır.
    Pascal + , Java -
  • Sınıf tanımları
    Pascalda belkide en sevdiğim özellik budur. Sınıf tanımlarının ve bu sınıfa ait kodların ayrı ayrı yerlerde olması. Java da Sınıf tanımlaması ve bu sınıfa ait kodlar aynı yerde olduğundan bir bakışta sınıfın tamamına ait resmi görmek çok zordur. Sınıf biraz kalabalık bir sınıf ise imkansızdır diyebiliriz. Ancak Javadoc tarzı bir araç kullanılmışsa sınıfın bütün metodlarını ve değişkenlerini farenin scroll tuşunu kullanmadan görme şansınız vardır. Tanımlama ve gerçekleme bölümlerinin ayrı ayrı olması biz programcılar için daha iyi olduğunu düşünüyorum ve pascal ın hanesine bir + daha koyuyorum.
    Pascal + , Java -
  • For Döngüsü
    Javada yer alan for döngüsü her zaman bana daha kullanışlı ve zahmetsiz gelmiştir. Pascaldaki for döngüsü ise basit ve fazla işe yaramaz gelmiştir. Javadaki for döngüsünün pascala da kazandırılması gerekir diye düşünüyorum ve + yı javaya veriyorum.
    Pascal - , Java +
  • Nesnelerin oluşturulması
    Javanın ve benzer dillerin bana göre en mantıksız olayıdır bu. Nesnenin, kendisini yine kendisine ait olan bir metodun içinden oluşturması.

    public class Nesne {
        public static void main(String[] args) {
           Nesne BenimNesne = new Nesne();
        }
    }
    

    “Bunda garip olan ne var ki? Main statik metod olduğundan bir sorun çıkmaz.” Çıkmaz çıkmasına eyvallah ama bu kendi kendini doğurmak gibi geliyor bana hep mantık olarak. Statik metod kullanarak bu şekilde bir sınıfı yine sınıfın kendisine ait başka bir metod ile oluşturmayı pascalda da yapabilirsiniz ama bu pek tercih edilmez. Genelde bir sınıf başka bir sınıf vasıtasıyla oluşturulur ve bence mantıklı olan da bu şekilde olmasıdır. (Tabi delphi derleyicisinin Application nesnesini nerde ve nasıl oluşturduğunu saymazsak.)
    Pascal + , Java -

  • Extends , Implements vs YeniSinif=Class(TEskiSınıf)
  • Sınıf türetme ve bir sınıfın arabirim uygulama şekli javada çok daha anlaşılır bir şekildedir.

    Class Arac{...}
    Class Taksi Extends Arac {...}
    
    TArac = Class;
    TTaksi=Class(TArac)
    

    Extends sözcüğü çok açıktır, pascalda ise sınıf türetme tıpkı java da ki parantezler gibi kafa karıştırıcıdır.
    Pascal - , Java +

  • Tip mi önce olmalı değişken adı mı?
    Javada değişken tanımlanacağı zaman önce değişkenin tipi belirtilir ardından değişkenin adı belirtilir.

    DegiskenTipi DegiskenAdi;
    

    Pascalda ise tam tersidir. Önce değişken adı sonra değişkenin tipi belirtilir.

    DegiskenAdi:DegiskenTipi;
    

    Burda da bana java yine doğmamış bir çocuğa isim koymak gibi bir çabanın içerisinde gelmektedir hep. Önce bir değişkenin olsun tipini sonra belirlersin. Nedir bu acelen?
    Pascalın burda alacak olduğu + tamamen kullanım alışkanlığıma bağlı olabilir. Yıllardır Değişken adından sonra değişken tipini belirlediğim için bu şekilde bir kullanım bana daha anlaşılır geliyor olabilir. Bu sebeple burdaki + ve - dikkate alınmayabilir.
    Pascal + , Java -

  • || != vs And Or
  • Kelimelerin anlatım gücü işaretlerden çok fazladır. + direkt olarak pascalın hanesine yazılıyor.
    Pascal + , Java -

  • Nesnenin oluşturulması
  • Buton = new Buton();
    Buton := TButon.Create();
    Javanın söz dizimi daha anlamlıdır. new sözcüğü yeni bir butonun oluşturulduğunu çok daha etkili bir biçimde anlatabiliyor. + javaya gidiyor.
    Pascal - , Java +

  • Super , Inherited
    Javada ki Super kelimesi yaptığı işi tam olarak karşılamıyor gibi bir izlenim bırakmıştır bende hep. Oysaki pascaldaki inherited kelimesi yaptığı işi tam olarak karşılıyor bana göre.
    Pascal + , Java -
  • Garbage Collector
    Bir programlama dilinin programcısına her türlü kolaylığı sağlaması gerekir. Programcıların uğraşacakları yeterince problemleri vardır zaten. Bir de bunlara büyük / küçük harf probleminin eklenmesi , oluşturulan nesnenelerin yok edilmesi sorumluluğun verilmesi koca koca derleyicilere yakışmaz. Garbage Collector özelliğinin delphiye de bir an önce gelmesini temenni ederek + yı javanın hanesine yazıyoruz.
    Pascal - , Java +

Aslında daha yazacak başka farklarda mevcut ama birazcık yoruldum gibi. Şimdilik benden bu kadar diyerek sizlerinde düşüncelerinizi belirtmenizi rica eder sayfanın Google Translate linkini de ahan buraya koyarım :)

Comments 12 Comments »

 
Fatih’in yeni delphi kitabi raflarda yerini aldi. Tum delphi severlere bu kitabi tavsiye ederim.

Uzun süre üzerinde çalıştığım Delphi 2007 / 2009 adlı kitabım sonunda sizlerle.

Kitabı Kitapyum ve KitapYurdu gibi sitelerden sipariş verebileceğiniz gibi, kitapçılardan da temin edebilirsiniz.

Detaylar için buraya tıklayın…

Comments No Comments »