Advanced Generics

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Advanced Generics

Mesaj gönderen PROGRAMADOR »

Merhaba arkadaşlar,

Bildiğiniz gibi Delphi'de artık generic sınıfları kullanılabiliyor. Ancak generic.collections unit'nin içinde yer alan fonksiyonlar çoğumuzu tatmin etmemekte. Bu ihtiyacı gidermek adına ben Delphi'nin Generic.Collections unit'ini editledim. Birkaç yararlı fonksiyon ekledim.

Eklediğim fonksiyonları sıralayacak olursak:

Kod: Tümünü seç

//index ile silme
procedure RemovebyIndex(index:integer);
//value ve keyin birlikte olup olmadığını döndürür
function ContainsKeyValue(const Key:TKey;Value:TValue): integer;
//finding index by key, key ile indexi bulma
function FindIndexByKey(const Key:TKey):integer;
//finding key by index, index ile keyi bulma
 function FindKeybyIndex(index:integer):TKey;
//finding value by index, index ile value'yu bulma
 function FindValueFromIndex(index:integer):TValue;
Not: Uses kısmında uGenerics.pas'ı kullandığınız takdirde Generics.Collection unitini kullanmayın.
Dosya ekleri
uGenerics.zip
uGenerics.pas
(11.66 KiB) 177 kere indirildi
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Advanced Generics

Mesaj gönderen SimaWB »

Şiddetle(!) tavsiye ederim Spring4D :wink:
There's no place like 127.0.0.1
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Advanced Generics

Mesaj gönderen PROGRAMADOR »

Merhaba,

Ben delphi'nin tdictinary classını daha kullanışlı hale getirmek istemiştim. tlist için de bir fonksiyon ekledim. İsteyen olursa güncel halini gönderebilirim.

İyi çalışmalar.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Advanced Generics

Mesaj gönderen SimaWB »

Teşekkürler, emeğinize sağlık...
There's no place like 127.0.0.1
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: Advanced Generics

Mesaj gönderen ismailkocacan »

PROGRAMADOR yazdı:Merhaba arkadaşlar,

Bildiğiniz gibi Delphi'de artık generic sınıfları kullanılabiliyor. Ancak generic.collections unit'nin içinde yer alan fonksiyonlar çoğumuzu tatmin etmemekte. Bu ihtiyacı gidermek adına ben Delphi'nin Generic.Collections unit'ini editledim. Birkaç yararlı fonksiyon ekledim.

Eklediğim fonksiyonları sıralayacak olursak:

Kod: Tümünü seç

//index ile silme
procedure RemovebyIndex(index:integer);
//value ve keyin birlikte olup olmadığını döndürür
function ContainsKeyValue(const Key:TKey;Value:TValue): integer;
//finding index by key, key ile indexi bulma
function FindIndexByKey(const Key:TKey):integer;
//finding key by index, index ile keyi bulma
 function FindKeybyIndex(index:integer):TKey;
//finding value by index, index ile value'yu bulma
 function FindValueFromIndex(index:integer):TValue;
Not: Uses kısmında uGenerics.pas'ı kullandığınız takdirde Generics.Collection unitini kullanmayın.
Merhaba
TDictionary sınıfına extension methodlar olarak da eklenebilir.
Böylelikle mevcut Generics.Collection uniti üzerinde herhangi bir editleme yapmadan, TDictionary sınıfına yeni methodlar eklemiş oluruz.

extension methodlar hakkında : http://docwiki.embarcadero.com/RADStudi ... rd_Helpers
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Advanced Generics

Mesaj gönderen PROGRAMADOR »

Helperlar generic classlarda kullanılamıyor maalesef.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: Advanced Generics

Mesaj gönderen ismailkocacan »

Evet daha önce de siz viewtopic.php?f=2&t=31496 şurada sanırım yapmaya çalışmışsınız.

siz desteklemiyor dedikten sonra,bende 2010 da test ettim.ama derlemedi.

.net tarafında generic bir tipe extension method yazılıyor mu acaba,onu da merak ettim şimdi.

siz sanırım delphi 2010 da denemiştiniz.

XE5,XE6 kullanan arkadaşlarda deneyen var mıdır ?
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Advanced Generics

Mesaj gönderen PROGRAMADOR »

xe5 ve xe6'da denemiştim. freepascal'da ise sorunsuz derliyor ama tanımlama biraz farklı. Tdictionary yerine freepascal'da fgl uniti içinde TFPGMap generic classı var. Ben kendim test için Tdictionary verdiğim şöyle bir generic class oluşturdum test için:

Kod: Tümünü seç

{
 uGenerics
}

{$mode objfpc}

unit uGenerics;



interface

uses
  Classes, SysUtils,fgl;


{$IF defined(VER2_4)}
  {$DEFINE OldSyntax}
{$IFEND}

  type

   { TDictionary }

   generic TDictionary <TKey,TData> = class(specialize TFPGMap<TKey,TData>)
    public
      function IndexOfKeyAndData(const AKey: TKey; const AData: TData): integer; {$ifdef CLASSESINLINE} inline; {$endif}
  end;



implementation

{ TDictionary }




function TDictionary.IndexOfKeyAndData(const AKey: TKey; const AData: TData
  ): integer;
begin
  Result:=-1;
  if AData=GetKeyData(AKey) then
        Result:=IndexOf(AKey);
end;

end.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Cevapla