Listbox itemlardaki yazılardan belirli bir karakteri silmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Listbox itemlardaki yazılardan belirli bir karakteri silmek

Mesaj gönderen webaytek »

Listbox itemlardaki yazılardan belirli bir karakteri silmek istiyorum
Yani elimdeki listede ürün kodları var. Bunları listbox ile okuttum.
ÖR
AB25663
AB-55592
AC22254
AX14445

gibi kodlar var. bunlardan içinde "-" (Tire) içerenlerin tirelerini silmek istiyorum yardımcı olur musunuz? - TEŞEKKÜR EDERİM
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

for i := 0 to ListBox1.Count - 1 do
  if pos('-', ListBox1.Items[i]) > 0 then
    ListBox1.Items[i].Delete;
şeklinde olması lazım :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Listbox itelerinin içinde teker teker ele alıp o karakteri aratıcaksın ve siliceksin.list boxtaki her item bir string olduğuna göre pos komutuyla arat ve tam yerini buluncada yerini alırsın ve orayı silersin.

Kod: Tümünü seç

var
          i,k:integer;
         str1:string;
        begin
       str1:='-';
       for i:=0 to listbox1.items.count-1 do
        begin
       k:=pos(str1,listbox1.items.strings[i]);
      if not k=0 then
      delete(str2,k,1);
    //////////////////
gibi ben burda sadece bir şeye dikkat etmedim aynı karakterden bir itemsde birdeb fazla olabilirliğine.fikir verir sana ,,kolcay gelsin.
Not:Aynı string içinde arananı bulunca o stringin sonuna gelip gelmediyse tekrar aynı stringten devam edermi biliyorum.devam ederse sorun olmaz.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

Hepinize çok teşekkür ederim ve değerli zamanınızı çaldığım için de özür dilerim :D
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

Özürlerimi Sunuyorum

Kod: Tümünü seç

var
i,k:integer;
str1:string;
begin
str1:='-';
for i:=0 to a1.items.count-1 do
begin
k:=pos(str1,a1.items.strings[i]);
if not k=0 then
delete(str1,k,1);
end;
kodu yazdım ama maalesef silmedi ama hata da vermedi :D
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Ben tire '-' lileri sildirmeyi istediğini anlamışım :? madem yazdık doğrusunu da yazalım :wink:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
// LisBox içinde '-' tire geçen satırların silinmesi.
var
  i, lc: integer;
begin
  i := 0;
  lc := ListBox1.Count - 1;
  repeat
    if pos('-', ListBox1.Items[i]) > 0 then
    begin
      ListBox1.Items.Delete(i);
      dec(lc);
    end;
    inc(i);
  until i >= lc;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

@RŞimşek hocaaam :D bu kod benim listeyi söktü attı yaw :D

Benim tam istediğim şu
içinde tire geçernlerin tirelerini silecek kod :D
Kesinlikle kayı silmek falan yoookk :D

Toplam Kayı Sayısı : 511
Tuşa 3 kere bastım Sayı : 125
:D
ELLERİNİZE SAĞLIK
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

Size bi iyilk yapiim tire karakteri kod içinde AB-32 gibi 3. karakter olrak geçiyor :D
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
    i: integer;
begin
    for i := 0 to ListBox1.Items.Count - 1 do
    begin
        ListBox1.Items[i] := AnsiReplaceStr(ListBox1.Items[i],'-','');
    end;
end;
Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

baba Delphi 5 te bööle bi komut yoookk :D
süper çözümler üretiyorsunuz ama benim işime yarayanı henüz bulunamadı :D
KOLAY GELSİN
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Zaten bu işini görmezdi. Fakat @vedatkaba nın kodunu biraz geliştirirsen işini görecekti :wink:

Kod: Tümünü seç

var
  i, k: integer;
begin
  for i := 0 to ListBox1.Items.Count - 1 do
  while pos('-', ListBox1.Items.Strings[i]) > 0 do  // birden fazla tire varsa..
  begin
    k := pos('-', ListBox1.Items.Strings[i]);
    ListBox1.Items.Strings[i] := 
       copy(ListBox1.Items.Strings[i], 1, k - 1) +
       copy(ListBox1.Items.Strings[i], k + 1, length(ListBox1.Items.Strings[i]) - k);
  end;
end;
Not: Test edildi, çalışıyor ona göre :!: :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Evet, en kısasını @hdayi yazdı :oops: uses a StrUtils i ekle.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

@rsimsek ustam bence de en iyisini sööledi ama ben Delphi 5 kullanıyorum burada strutils comp.'u yok ama
AnsiStrPos & Ansipos komutları war bunlarla yapmamı sağlarsanız olabilir belki

@rsimsek ustamın sööledii son komutta da içinde çoklu tire olan itemların her tiresini siliyor. sadece ilk tireyi sildirtebilirsek sizi daha rahatsız etmiim :D
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

    k := pos('-', ListBox1.Items.Strings[i]);
satırını while ... satırının üstüne taşıman yeterli. yada ;

Kod: Tümünü seç

var
  i, k: integer;
begin
  for i := 0 to ListBox1.Items.Count - 1 do
  begin
    k := pos('-', ListBox1.Items.Strings[i]);
    if k > 0 then // her satır için bir kere yapar.
    begin
      ListBox1.Items.Strings[i] :=
          copy(ListBox1.Items.Strings[i], 1, k - 1) +
          copy(ListBox1.Items.Strings[i], k + 1, length(ListBox1.Items.Strings[i]) - k);
    end;
  end;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

@rsimsek ustam bildiğini biliyordum :D
aslında ben seni denemek için sormuştum zaten :D

Kendinize Çok iyi Bakınız - Herkeze KOLAY GELSİN özellikle de
@rsimsek hocama - benim kadar biliyormuş :D
Cevapla