TStrings Tipinde Veriler için Bir kaç fonksiyon içeren Unit

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
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

TStrings Tipinde Veriler için Bir kaç fonksiyon içeren Unit

Mesaj gönderen Lost Soul »

Strins tipini çokca kullandığım için sık kullandığım özelliklerden bi kaçını fonksiyon haline getirip bir unit de topladım. Geliştirmeye devam edeveğim bu unit'i faydalı olması dileğiyle sizlerle de paylaşmak istiyorum

Kod: Tümünü seç

{ *********************************************************************** }
{                                                                         }
{ UStrinsF : Strings tipindeki değişkenler için kütüphane                 }

{  Bu Unit TStrings tipindeki değişkenler için çeşitli fonksiyonlar       }
{  içermektedir.Programlarımızda sıklıkla kullandığımız TStrings tipindeki}
{  değişkenler için yazılmıştır                                           }
{ *********************************************************************** }

unit UStringsF;

interface
uses Classes,SysUtils;
type
TAramaTipi =(OlduguGibi,ilebaslayan,ilebiten,icindeolan);
type
AramaSonucu =record
BulunanSayisi : Integer;
BulunanSatirlar : Array[0..65535] of integer;
end;

type
  TStringsF = class

  private
    { Private declarations }
  public
    { Public declarations }

    procedure InitializeValues;
    procedure DestroyValues;
    // Tstrings tipindeki veriyi Stringe çevirir
    function StringsToStr (FStrings : Tstrings;EndOfLineChar :boolean = True) : String;
    // KaynakListe den Çıkartılacak listede olan elemanları çıkartır.
    function ListeFark (KaynakListe,CikartilacakListe : Tstrings) : Tstrings;
    // Hem 1.Liste hem de  2. liste de olanları verir.
    function ListeKesisim (KaynakListe,CikartilacakListe : Tstrings) : Tstrings;
    // Listeleri birleştirir
    function ListeBirlesim( Liste1,Liste2 : Tstrings;TekrarlariSil:boolean=true):Tstrings;
    // Listede arama yap //TAramaTipi =(OlduguGibi,ilebaslayan,ilebiten,icindeolan);
    function Bul(Liste : Tstrings;Aranan : String;AramaTipi:TAramaTipi=OlduguGibi;BuyukKucukHarfDuyarli : Boolean=false):AramaSonucu;
    // Tüm listeyi BÜYÜK HARFE çevir
    function SetUpper(aList:Tstrings) :TStrings;
    // Tüm listeyi küçük harfe çevir
    function SetLower(aList:Tstrings) :Tstrings;
  end;
Var
  StringsF : TStringsF;
  S,S1,S2,S3 : TStrings;


implementation
procedure TStringsF.InitializeValues;
begin
if s =nil then S :=Tstringlist.Create;
if s1=nil then S1:=Tstringlist.Create;
if s2=nil then S2:=TstringList.Create;
if s3=nil then S3:=TStringlist.Create;
s.Clear;
s1.Clear;
s2.Clear;
s3.Clear;
end;

procedure TStringsF.DestroyValues;
begin
if s <>nil then S.Free;
if s1<>nil then S1.Free;
if s2<>nil then S2.Free;
if s3<>nil then S3.Free;
end;

// Tstrings tipindeki veriyi Stringe çevirir
function TStringsF.StringsToStr (FStrings : Tstrings;EndOfLineChar :boolean = True) : String;
var i : integer;
begin
for i:= 0 to FStrings.Count-1 do
 if EndOfLineChar then
 result:=result+FStrings.Strings[i]+#13#10
 else
 result:=result+FStrings.Strings[i]+' ';
end;

// KaynakListe den Çıkartılacak listede olan elemanları çıkartır.
function TStringsF.ListeFark (KaynakListe,CikartilacakListe : Tstrings) : Tstrings;
Var i,k : integer;
fark : boolean;
begin
s.Clear;
for i := 0 to KaynakListe.Count - 1 do
  begin
  fark:=true;
  for k := 0 to CikartilacakListe.Count - 1 do
    begin
    if CikartilacakListe.Strings[k] = KaynakListe.Strings[i] then fark:=false;
    end;
  if fark then s.Add(KaynakListe.Strings[i]);
  end;
result:=s;
end;
// Hem 1.Liste hem de  2. liste de olanları verir.
function TStringsF.ListeKesisim (KaynakListe,CikartilacakListe : Tstrings) : Tstrings;
Var i,k : integer;
fark : boolean;
begin
s.Clear;
for i := 0 to KaynakListe.Count - 1 do
  begin
  fark:=true;
  for k := 0 to CikartilacakListe.Count - 1 do
    begin
    if CikartilacakListe.Strings[k] = KaynakListe.Strings[i] then fark:=false;
    end;
  if not fark then s.Add(KaynakListe.Strings[i]);
  end;
result:=s;
end;
// Listeleri birleştirir

function TStringsF.ListeBirlesim( Liste1,Liste2 : Tstrings;TekrarlariSil:boolean=true):Tstrings;
Var i:integer;

begin
s2.Clear;
for i :=0 to liste1.Count - 1 do
  if not TekrarlariSil then s2.Add(liste1.Strings[i])
  else
  if bul(s2,liste1.Strings[i],OlduguGibi,True).BulunanSayisi<=0 then
  s2.Add(liste1.Strings[i]);
for i :=0 to liste2.Count - 1 do
  if not TekrarlariSil then s2.Add(liste2.Strings[i])
  else
  if bul(s2,liste2.Strings[i],OlduguGibi,True).BulunanSayisi<=0 then
  s2.Add(liste2.Strings[i]);
result:=s2;
end;

function TStringsF.Bul(Liste : Tstrings;Aranan : String;AramaTipi:TAramaTipi=OlduguGibi;BuyukKucukHarfDuyarli : Boolean=false):AramaSonucu;
Var
i : integer;
B : Boolean;
ASN: AramaSonucu;
begin
//TAramaTipi =(OlduguGibi,ilebaslayan,ilebiten,icindeolan);
ASN.BulunanSayisi:=0;
for i := 0 to liste.Count - 1 do
  begin
  B := False;
  case AramaTipi Of
  oldugugibi :
    begin
    if buyukkucukharfduyarli then
      begin
      if liste.Strings[i]=Aranan then b:=true;
      end
      else
      if uppercase(liste.Strings[i])=uppercase(aranan) then b:=true;
    end; // OlduguGibi
  ilebaslayan :
    begin
    if buyukkucukharfduyarli then
      begin
      if pos(Aranan,liste.Strings[i])=1 then b:=true;
      end
      else
      if pos(uppercase(aranan),uppercase(liste.Strings[i]))=1 then b:=true;
    end; // OlduguGibi
  icindeolan :
    begin
    if buyukkucukharfduyarli then
      begin
      if pos(Aranan,liste.Strings[i])>0 then b:=true;
      end
      else
      if pos(uppercase(aranan),uppercase(liste.Strings[i]))>0then b:=true;
    end; // OlduguGibi
  ilebiten :
    begin
    if buyukkucukharfduyarli then
      begin
      if pos(Aranan,liste.Strings[i])=length(liste.Strings[i])- length(Aranan) +1 then b:=true;
      end
      else
      if pos(uppercase(aranan),uppercase(liste.Strings[i]))=length(liste.Strings[i])- length(Aranan)+1 then b:=true;
    end; // OlduguGibi
  end;
   if b then
   begin
   ASN.BulunanSayisi:=ASN.BulunanSayisi+1;
   ASN.BulunanSatirlar[ASN.BulunanSayisi-1]:=i;
   end;
  end;
result:=ASN;
end;

function TStringsF.SetUpper(aList:Tstrings) : TStrings;
var i : integer;
begin
s.Clear;
for i:=0 to aList.Count-1 do
  s.Add(uppercase(alist.Strings[i]));
result:=s;
end;

function TStringsF.SetLower(aList:Tstrings) : Tstrings;
var i : integer;
begin
s.Clear;
for i:=0 to aList.Count-1 do
  s.Add(lowercase(alist.Strings[i]));
result:=s;
end;

end.


Unit ve Test programı ayrıca aşağıdaki linkten de indirilebilir.
TStrinsF ve Test Programını indirmek için tıklayın


URL2

Saygılarımla İyi Çalışmalar ;)
En son Lost Soul tarafından 12 Eki 2010 06:04 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Paylaşım için teşekkürler, umarım katkılarınız daim olur :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla