s.a
en hzili sekilde stringlist veya memodaki alt alta yazilmis kelimleri özel olarak siralamak istiyorum
sirasiyla s,b,n,a,f,g,u,e gibi sectigim harflere gore siralasin istiyorum
serkan
burak
nesrin
ali
gibi nasil yaparim.
özel sıralama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: özel sıralama
Merhaba, örnekteki gibi kendi kıyaslama fonksiyonunuzu yazarak hızlı bir sıralama işlemini TStringList sınıfı ile yapabilirsiniz.Burada önemli olan Kiyasla fonksiyonunda Index1'inci sıradaki eleman, Index2'nci sıraya göre, sıralamada üstte kalacaksa -1, alta kalacaksa +1 değerini almasıdır. İyi çalışmalar.
Kod: Tümünü seç
function Kiyasla(List: TStringList; Index1, Index2: Integer): Integer;
begin
if List[Index1]>List[Index2] then Result:=1
else if List[Index1]<List[Index2] then Result:=-1
else Result:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var Liste:TStringList;
begin
Liste:=TStringList.Create;
try
Liste.Assign(Memo1.Lines);
Liste.CustomSort(Kiyasla);
Memo1.Lines:=Liste;
finally
Liste.Free;
end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: özel sıralama
tesekkur ederim.
fakat belirledigim 28 harf sirasini c, d, y, a, e, f,...... harf sirasini nereye nasil yazacagim.
fakat belirledigim 28 harf sirasini c, d, y, a, e, f,...... harf sirasini nereye nasil yazacagim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: özel sıralama
Kıyasla fonksiyonu içerisinde bunu kodlaman gerekiyordu. Şimdiki örnek, biraz hazır olacak ama umarım fikir verecektir.Burada önemli olan const HarfDizisi:String='cdyaef.....'; satırında doğru sıralamadaki değeri vermendir. İyi çalışmalar.
Kod: Tümünü seç
function Kiyasla(List: TStringList; Index1, Index2: Integer): Integer;
const HarfDizisi:String='cdyaef.....';
var i1,i2,n1,n2,i,n:Integer; S1,S2:String; Devam:Boolean;
begin
Result:=0;
S1:=List[Index1];n1:=Length(S1);
S2:=List[Index2];n2:=Length(S2);
n:=n1;
if n1>n2 then begin
Result:=1;
n:=n2;
end else if n1<n2 then Result:=-1;
i:=1; Devam:=True;
while (i<=n) and Devam do begin
i1:=Pos(S1[i],HarfDizisi);
i2:=Pos(S2[i],HarfDizisi);
if i1>i2 then begin
Result:=1;
Devam:=False;
end else if i1<i2 then begin
Result:=-1;
Devam:=False;
end;
Inc(i);// --> i:=i+1;
end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: özel sıralama
cok tesekkur ederim sayin sabanakman. ellerin dert gormesin.
bir sorunum daha olmustu alttaki topice yazmistim onada bir care bulabilirmiyiz, son mesajimdaki
viewtopic.php?f=2&t=26224
bir sorunum daha olmustu alttaki topice yazmistim onada bir care bulabilirmiyiz, son mesajimdaki
viewtopic.php?f=2&t=26224