Listbox itemlardaki yazılardan belirli bir karakteri silmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Listbox itemlardaki yazılardan belirli bir karakteri silmek
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
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
Kod: Tümünü seç
for i := 0 to ListBox1.Count - 1 do
if pos('-', ListBox1.Items[i]) > 0 then
ListBox1.Items[i].Delete;

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
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.
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.
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);
//////////////////
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.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Özürlerimi Sunuyorum
kodu yazdım ama maalesef silmedi ama hata da vermedi 
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;

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


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!!
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;
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned

Ez cüdâyîhâ şikâyet mîküned

Zaten bu işini görmezdi. Fakat @vedatkaba nın kodunu biraz geliştirirsen işini görecekti
Not: Test edildi, çalışıyor ona göre


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;


Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
@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
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

Kod: Tümünü seç
k := pos('-', ListBox1.Items.Strings[i]);
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!!