Array karşılaştırma aynı olan elemanları silme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
JavaCiva
Üye
Mesajlar: 54
Kayıt: 27 Tem 2014 05:10

Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen JavaCiva »

Merhaba
2 adet array mevcut bunlarda kayıt sayısı 1000000 den fazla.
1 array 2. array
1 9
2 7
3 7
4 2
5 4


1. arrayda var olan elamanları 2. arrayda silmek için
tmp array diye bir array açıoyrum.
Eğer eleman var ise o elemanı atlıyorum
yok ise elemanı tmp e yazıyorum
son olarak tmp array ın boyunu ayarlıyorum ve 1. arrayın üstüne yazıyorum.
Sonuc
1
3
4
dönüyor
Bunun ram ve işlemci optimisasyonu açısından daha hızlı bir yöntemi var mı?
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen kimimben »

JavaCiva yazdı: 1. arrayda var olan elamanları 2. arrayda silmek için
tmp array diye bir array açıoyrum.
Eğer eleman var ise o elemanı atlıyorum
yok ise elemanı tmp e yazıyorum
son olarak tmp array ın boyunu ayarlıyorum ve 1. arrayın üstüne yazıyorum.
Sonuc
1
3
4
dönüyor
Nasıl bir kod yazdınız ?
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen adelphiforumz »

Ben olsam
Elimdeki içinde veri aranacak olan arrayi bubble sort yöntemi ile önce sıralardım

Sonra aranacak değeri, aranacak olan arrayin içinde büyüklük küçüklük yapısına göre bölme yöntemi ile
yaklaşık 1,000,000 kayıt için 19 hamlede tüm kayıtları gezmeksizin varlığını tespit edip işlemimi tamamlardım

Not : buna benzer bir yöntemi delphi 5 te yaptığımda Listarray içine atıp armak ve array içinde tüm kayıtlarda
armaktan çok daha hızlı olduğunu tecrübe ettiğimi söyliyebilirim.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen kimimben »

@adelphiforumz; @JavaCiva'nın testine göre bir örnek paylaşmanız mümkün müdür ?
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen adelphiforumz »

kimimben yazdı:@adelphiforumz; @JavaCiva'nın testine göre bir örnek paylaşmanız mümkün müdür ?
Belki biraz daha uğraşılsa daha kısa ve düzgün kod çıkabilir
ben çok üstünde düşünmeden yazdım.

DFM

Kod: Tümünü seç

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 411
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 11
    Width = 75
    Height = 13
    Caption = 'Dizi Boyutu'
  end
  object Label2: TLabel
    Left = 24
    Top = 36
    Width = 61
    Height = 13
    Caption = 'Arama Say'#305's'#305
  end
  object Button1: TButton
    Left = 14
    Top = 152
    Width = 161
    Height = 25
    Caption = 'Ba'#351'lat'
    TabOrder = 0
    OnClick = Button1Click
  end
  object lbSonuc: TListBox
    Left = 202
    Top = 183
    Width = 383
    Height = 175
    ItemHeight = 13
    TabOrder = 1
  end
  object lbBilgi: TListBox
    Left = 14
    Top = 183
    Width = 161
    Height = 175
    ItemHeight = 13
    TabOrder = 2
  end
  object SEDiziBoyutu: TSpinEdit
    Left = 118
    Top = 8
    Width = 111
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 3
    Value = 1000000
  end
  object SEAramaSayisi: TSpinEdit
    Left = 118
    Top = 31
    Width = 111
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 4
    Value = 1000
  end
  object pnlSabit: TPanel
    Left = 118
    Top = 59
    Width = 201
    Height = 30
    TabOrder = 5
    Visible = False
    object Label3: TLabel
      Left = 3
      Top = 6
      Width = 72
      Height = 13
      Caption = 'Aranacak Sabit'
    end
    object SESabitSayi: TSpinEdit
      Left = 81
      Top = 3
      Width = 111
      Height = 22
      MaxValue = 0
      MinValue = 0
      TabOrder = 0
      Value = 0
    end
  end
  object cxbSabitmi: TCheckBox
    Left = 20
    Top = 62
    Width = 92
    Height = 21
    Caption = 'Sabit Say'#305' Ara'
    TabOrder = 6
    OnClick = cxbSabitmiClick
  end
end
PAS

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
  Generics.Collections, Vcl.Samples.Spin, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    lbSonuc: TListBox;
    lbBilgi: TListBox;
    SEDiziBoyutu: TSpinEdit;
    Label1: TLabel;
    SEAramaSayisi: TSpinEdit;
    Label2: TLabel;
    pnlSabit: TPanel;
    Label3: TLabel;
    SESabitSayi: TSpinEdit;
    cxbSabitmi: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure cxbSabitmiClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Dizi : Array of integer;
  I,X, iSure, iDiziSayisi, iAramaSayisi, iArananSayi, iLow, iHigh : Integer;
  bSwcBul : Boolean;

  procedure QuickSort(var A: array of Integer; iLo, iHi: Integer) ;
  var
    Lo, Hi, Pivot, T: Integer;
  begin
    Lo := iLo;
    Hi := iHi;
    Pivot := A[(Lo + Hi) div 2];
    repeat
      while A[Lo] < Pivot do Inc(Lo) ;
      while A[Hi] > Pivot do Dec(Hi) ;
      if Lo <= Hi then
      begin
        T := A[Lo];
        A[Lo] := A[Hi];
        A[Hi] := T;
        Inc(Lo) ;
        Dec(Hi) ;
      end;
    until Lo > Hi;
    if Hi > iLo then QuickSort(A, iLo, Hi) ;
    if Lo < iHi then QuickSort(A, Lo, iHi) ;
  end;

begin

    SetLength(Dizi, 1);

    iDiziSayisi := SEDiziBoyutu.Value;
    iAramaSayisi := SEAramaSayisi.Value;

    lbBilgi.Items.Clear;

    iSure := GetTickCount;
    SetLength(Dizi, iDiziSayisi);
    for I := 0 to iDiziSayisi - 1 do
    begin
        Dizi[I] := I;
    end;

    lbBilgi.Items.Add('Dizi Oluşturma Süresi : ' + IntToStr(GetTickCount - iSure));

    iSure := GetTickCount;
    QuickSort(Dizi, Low(Dizi), High(Dizi)) ;
    lbBilgi.Items.Add('Sıralama süresi : ' + IntToStr(GetTickCount - iSure));

    lbSonuc.Items.Clear;

    iSure := GetTickCount;
    for I := 0 to iAramaSayisi - 1 do
    begin
        Button1.Caption := IntToStr(I);
        iArananSayi := Random(iDiziSayisi);
        for X := 0 to iDiziSayisi - 1 do
        begin
            if Dizi[X] = iArananSayi then
            begin
                lbSonuc.Items.Add(IntToStr(Dizi[X]));
                break;
            end;
        end;
    end;
    lbBilgi.Items.Add('Sıralı bulma süresi : ' + IntToStr(GetTickCount - iSure));

    Application.ProcessMessages;
    iSure := GetTickCount;
    lbSonuc.Items.Clear;
    for I := 0 to iAramaSayisi - 1 do
    begin
        Button1.Caption := IntToStr(I);

        if cxbSabitmi.Checked then
           iArananSayi := SESabitSayi.Value
        else
           iArananSayi := Random(iDiziSayisi);

        X := 0;
        while 1=1 do
        begin
            if X = 0 then
            begin
                X := Length(Dizi) div 2;
                iHigh := Length(Dizi);
                iLow  := 1;
            end;

            if Dizi[X] = iArananSayi then
            begin
                lbSonuc.Items.Add('Sıra No : ' + IntToStr(I) + ', Index : ' + IntToStr(X) + ', Aranan Sayı : ' + IntToStr(Dizi[X]));
                break;
            end;

            if iArananSayi < Dizi[X] then
                iHigh := X
            else
                iLow := X;

            X := iLow + ((iHigh - iLow) div 2);

            if ( (X <= 2) or (X = iHigh) or (X = (Length(Dizi) -1)) )  then
            begin
                bSwcBul := False;
                for X := (iLow) to iHigh do
                begin
                    if Dizi[X] = iArananSayi then
                    begin
                        lbSonuc.Items.Add('Sıra No x : ' + IntToStr(I) + ', Index : ' + IntToStr(X) + ', Aranan Sayı : ' + IntToStr(Dizi[X]));
                        bSwcBul := True;
                        break;
                    end;
                end;
                if bSwcBul = False then
                    lbSonuc.Items.Add('Aranan Sayı bulunamadı : ' + IntToStr(iArananSayi));
                break;
            end;
        End;
    end;
    lbBilgi.Items.Add('Bölerek Bulma Süresi : ' + IntToStr(GetTickCount - iSure));
    Button1.Caption := 'Başlat';
end;

procedure TForm1.cxbSabitmiClick(Sender: TObject);
begin
  pnlSabit.Visible := cxbSabitmi.Checked;
end;

end.
En son adelphiforumz tarafından 24 Kas 2016 11:39 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen barutali »

TArray ile kullanabilirsiniz.

Kod: Tümünü seç

 Uses System.Generics.Collections, System.Generics.Defaults;

Kod: Tümünü seç

var
 ArrayOfSource : array of string; // kaynak
 ArrayOfDestination : array of string; // hedef
 I, FIndex : Integer;
begin
 SetLength(ArrayOfSource, 1000000);     
 SetLength(ArrayOfDestination, 500000);

 for I := 0 to 999999 do
 begin
   ArrayOfSource[i] := i.ToString; // kaynak arrayı doldur..
 end;

 for I := 0 to 499999 do
 begin
   ArrayOfDestination[i] := i.ToString; // hedef arrayı doldur..
 end;
 
  TArray.Sort<String>(ArrayOfSource, TStringComparer.Ordinal); // Kaynak arrayı sırala 
  TArray.Sort<String>(ArrayOfDestination, TStringComparer.Ordinal); // Hedef arrayı sırala 
  
 ListBox1.Items.BeginUpdate;
 for I := 0 to Length(ArrayOfSource) -1 do
 begin
  if TArray.BinarySearch<String>(ArrayOfDestination, ArrayOfSource[I], FIndex, TStringComparer.Ordinal) then // arama yap
  begin
    ListBox1.Items.Add(ArrayOfDestination[FIndex]); // bulunanları listbox a at..
  end;
 end;
 ListBox1.Items.EndUpdate;
amatör küme programcı :D
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen adelphiforumz »

"barutali" arkadaşımızın dediği yöntemde oldukça hızlı olabilir fakat denemk lazım
fakat yanlış bilmiyorsam kullanılan sınıflar 2014 sonrasındaki delphi sürümlerine eklendi
daha önceki sürümler için yine uğraşmak lazım
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen adelphiforumz »

adelphiforumz yazdı:"barutali" arkadaşımızın dediği yöntemde oldukça hızlı olabilir fakat denemk lazım
fakat yanlış bilmiyorsam kullanılan sınıflar 2014 sonrasındaki delphi sürümlerine eklendi
daha önceki sürümler için yine uğraşmak lazım
Test sonuçları aşağıdaki şekilde ve optimize edilmiş kod ekte işinize yarar umarım
Resim

.DFM

Kod: Tümünü seç

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 411
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 11
    Width = 53
    Height = 13
    Caption = 'Dizi Boyutu'
  end
  object Label2: TLabel
    Left = 24
    Top = 36
    Width = 61
    Height = 13
    Caption = 'Arama Say'#305's'#305
  end
  object Button1: TButton
    Left = 14
    Top = 116
    Width = 161
    Height = 25
    Caption = 'S'#305'ral'#305' / B'#246'lme Y'#246'ntemi'
    TabOrder = 0
    OnClick = Button1Click
  end
  object lbSonuc: TListBox
    Left = 202
    Top = 183
    Width = 383
    Height = 175
    ItemHeight = 13
    TabOrder = 1
  end
  object lbBilgi: TListBox
    Left = 14
    Top = 183
    Width = 161
    Height = 175
    ItemHeight = 13
    TabOrder = 2
  end
  object SEDiziBoyutu: TSpinEdit
    Left = 118
    Top = 8
    Width = 111
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 3
    Value = 1000000
  end
  object SEAramaSayisi: TSpinEdit
    Left = 118
    Top = 31
    Width = 111
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 4
    Value = 1000
  end
  object pnlSabit: TPanel
    Left = 118
    Top = 59
    Width = 201
    Height = 30
    TabOrder = 5
    Visible = False
    object Label3: TLabel
      Left = 3
      Top = 6
      Width = 72
      Height = 13
      Caption = 'Aranacak Sabit'
    end
    object SESabitSayi: TSpinEdit
      Left = 81
      Top = 3
      Width = 111
      Height = 22
      MaxValue = 0
      MinValue = 0
      TabOrder = 0
      Value = 0
    end
  end
  object cxbSabitmi: TCheckBox
    Left = 20
    Top = 62
    Width = 92
    Height = 21
    Caption = 'Sabit Say'#305' Ara'
    TabOrder = 6
    OnClick = cxbSabitmiClick
  end
  object Button2: TButton
    Left = 14
    Top = 147
    Width = 161
    Height = 25
    Caption = 'TArray Y'#246'ntemi'
    TabOrder = 7
    OnClick = Button2Click
  end
end
.PAS

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
  Generics.Collections, System.Generics.Defaults,
  Vcl.Samples.Spin, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    lbSonuc: TListBox;
    lbBilgi: TListBox;
    SEDiziBoyutu: TSpinEdit;
    Label1: TLabel;
    SEAramaSayisi: TSpinEdit;
    Label2: TLabel;
    pnlSabit: TPanel;
    Label3: TLabel;
    SESabitSayi: TSpinEdit;
    cxbSabitmi: TCheckBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure cxbSabitmiClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Dizi : Array of integer;
  I,X, FIndex, iSure, iDiziSayisi, iAramaSayisi, iArananSayi, iLow, iHigh : Integer;
  bSwcBul : Boolean;
  procedure QuickSort(var A: array of Integer; iLo, iHi: Integer) ;
  var
    Lo, Hi, Pivot, T: Integer;
  begin
    Lo := iLo;
    Hi := iHi;
    Pivot := A[(Lo + Hi) div 2];
    repeat
      while A[Lo] < Pivot do Inc(Lo) ;
      while A[Hi] > Pivot do Dec(Hi) ;
      if Lo <= Hi then
      begin
        T := A[Lo];
        A[Lo] := A[Hi];
        A[Hi] := T;
        Inc(Lo) ;
        Dec(Hi) ;
      end;
    until Lo > Hi;
    if Hi > iLo then QuickSort(A, iLo, Hi) ;
    if Lo < iHi then QuickSort(A, Lo, iHi) ;
  end;

begin

    SetLength(Dizi, 1);

    iDiziSayisi := SEDiziBoyutu.Value;
    iAramaSayisi := SEAramaSayisi.Value;

    lbBilgi.Items.Clear;
    lbBilgi.Items.Add('-----Sıralı/Bölme Sonuçları-----');

    iSure := GetTickCount;
    SetLength(Dizi, iDiziSayisi);
    for I := 0 to iDiziSayisi - 1 do
    begin
        Dizi[I] := I;
    end;

    lbBilgi.Items.Add('Dizi Oluşturma Süresi : ' + IntToStr(GetTickCount - iSure) + '.ms');

    iSure := GetTickCount;
    QuickSort(Dizi, Low(Dizi), High(Dizi)) ;
    lbBilgi.Items.Add('Sıralama süresi : ' + IntToStr(GetTickCount - iSure) + '.ms');

    lbSonuc.Items.Clear;

    iSure := GetTickCount;
    lbSonuc.Items.BeginUpdate;
    for I := 0 to iAramaSayisi - 1 do
    begin
//        Button1.Caption := IntToStr(I);
        iArananSayi := Random(iDiziSayisi);
        for X := 0 to iDiziSayisi - 1 do
        begin
            if Dizi[X] = iArananSayi then
            begin
                lbSonuc.Items.Add(IntToStr(Dizi[X]));
                break;
            end;
        end;
    end;
    lbSonuc.Items.EndUpdate;
    lbBilgi.Items.Add('Sıralı bulma süresi : ' + IntToStr(GetTickCount - iSure) + '.ms');

    Application.ProcessMessages;
    iSure := GetTickCount;
    lbSonuc.Items.Clear;
    lbSonuc.Items.BeginUpdate;
    for I := 0 to iAramaSayisi - 1 do
    begin
//        Button1.Caption := IntToStr(I);

        if cxbSabitmi.Checked then
           iArananSayi := SESabitSayi.Value
        else
           iArananSayi := Random(iDiziSayisi);

        X := 0;
        while 1=1 do
        begin
            if X = 0 then
            begin
                X := Length(Dizi) div 2;
                iHigh := Length(Dizi);
                iLow  := 1;
            end;

            if Dizi[X] = iArananSayi then
            begin
                lbSonuc.Items.Add('Sıra No : ' + IntToStr(I) + ', Index : ' + IntToStr(X) + ', Aranan Sayı : ' + IntToStr(Dizi[X]));
                break;
            end;

            if iArananSayi < Dizi[X] then
                iHigh := X
            else
                iLow := X;

            X := iLow + ((iHigh - iLow) div 2);

            if ( (X <= 2) or (X = iHigh) or (X = (Length(Dizi) -1)) )  then
            begin
                bSwcBul := False;
                for X := (iLow) to iHigh do
                begin
                    if Dizi[X] = iArananSayi then
                    begin
                        lbSonuc.Items.Add('Sıra No x : ' + IntToStr(I) + ', Index : ' + IntToStr(X) + ', Aranan Sayı : ' + IntToStr(Dizi[X]));
                        bSwcBul := True;
                        break;
                    end;
                end;
                if bSwcBul = False then
                    lbSonuc.Items.Add('Aranan Sayı bulunamadı : ' + IntToStr(iArananSayi));
                break;
            end;
        End;
    end;
    lbSonuc.Items.EndUpdate;
    lbBilgi.Items.Add('Bölerek Bulma Süresi : ' + IntToStr(GetTickCount - iSure) + '.ms');

    Button1.Caption := 'Sıralı / Bölme Yöntemi';
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 ArrayOfSource : array of string; // kaynak
 ArrayOfDestination : array of string; // hedef
 I, iSure, FIndex : Integer;
begin

  lbBilgi.Items.Add('-----TArray Sonuçları-----');
  SetLength(ArrayOfSource, SEDiziBoyutu.Value);
  SetLength(ArrayOfDestination, (SEDiziBoyutu.Value div 2));

  iSure := GetTickCount;
  for I := 0 to (SEDiziBoyutu.Value-1) do
  begin
      ArrayOfSource[i] := i.ToString; // kaynak arrayı doldur..
  end;
  lbBilgi.Items.Add('Dizi Oluşturma Süresi 1 : ' + IntToStr(GetTickCount - iSure) + '.ms');

  iSure := GetTickCount;
  for I := 0 to (SEDiziBoyutu.Value div 2) do
  begin
      ArrayOfDestination[i] := i.ToString; // hedef arrayı doldur..
  end;
  lbBilgi.Items.Add('Dizi Oluşturma Süresi 2 : ' + IntToStr(GetTickCount - iSure) + '.ms');

  iSure := GetTickCount;
  TArray.Sort<String>(ArrayOfSource, TStringComparer.Ordinal); // Kaynak arrayı sırala
  lbBilgi.Items.Add('Sıralama süresi 1: ' + IntToStr(GetTickCount - iSure) + '.ms');

  iSure := GetTickCount;
  TArray.Sort<String>(ArrayOfDestination, TStringComparer.Ordinal); // Hedef arrayı sırala
  lbBilgi.Items.Add('Sıralama süresi 2: ' + IntToStr(GetTickCount - iSure) + '.ms');

  iSure := GetTickCount;
  lbSonuc.Items.BeginUpdate;
  for I := 0 to Length(ArrayOfSource) -1 do
  begin
      if TArray.BinarySearch<String>(ArrayOfDestination, ArrayOfSource[I], FIndex, TStringComparer.Ordinal) then // arama yap
      begin
          lbSonuc.Items.Add(ArrayOfDestination[FIndex]); // bulunanları listbox a at..
      end;
  end;
  lbSonuc.Items.EndUpdate;
  lbBilgi.Items.Add('Bulma Süresi: ' + IntToStr(GetTickCount - iSure) + '.ms');
end;

procedure TForm1.cxbSabitmiClick(Sender: TObject);
begin
  pnlSabit.Visible := cxbSabitmi.Checked;
end;

end.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: Array karşılaştırma aynı olan elemanları silme

Mesaj gönderen kimimben »

@adelphiforumz ilgi ve paylaşım için teşekkürler
Müsait bir zamanımda inceleyeceğim.
Cevapla