Memo da Eleme Yapmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Memo da Eleme Yapmak

Mesaj gönderen s1lv3r »

Merhaba,

Farklı bir program geliştiriyorum. Bu yüzden soracağım brz saçma gelebilir :)
Direk örnekle sorarsam daha iyi anlatabilceğimi düşünüyorum ;

Memo1 de şöyle yazılar var

Kod: Tümünü seç

595305x43xx64314361079x9x
9xx5x60301x4x3737741xx005
729482xxx2x18x2xx9x556642
789075970xx177231x6xx46xx
2xx7503259x18238219x2x1xx
xxxxx0254x41x8xxxx981xx4x
2xx71xx4x62x7x4xx09624195
4x880xx98xxxxxx6xx19xxx57
57x6x71223xx22x00272908xx
4x423xxxx49x0734395x4x567
Butona tıkladığımda bunlar memo2.ye sayılar halinde alt alta yazılacak ve aradaki x ler silinecek. Yani x ler sayıların ayrıca olarak düşünebiliriz.

Butona tıkladığımda memo2 şu şekilde olacak

Kod: Tümünü seç

595305
43
64314361079
9
9
5
60301
4
3737741
005
...

Daha sonra bunlar basamak hanesine göre gruplara ayrılacak.

1 basamaklılar memo3 e 2 basamaklılar memo4 e 3 basamaklılar memo5 ...

biraz uzun olduğunun farkındayım ama bildiğiniz kadarına cvp verirseniz memnun olurum.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

ilk aşamada şöyle bir kod olabilir.

Kod: Tümünü seç

for i:=0 to memo1.lines.count do
begin
         edit1.text:=memo1.lines[i];
         edit2.text:='';
          for j:=0 to edit1.lenght do 
               begin
               if edit1.text[j]<>'x' then edit2.text:=edit2.text+edit1.text[j];
               end;
         memo2.lines.add(edit2.text);
end;
( bilgisayarda delphi olmadığı için kodda yanlışlık olabilir.)

bu kod x leri eleyip memo2ye dolduracaktır.

memo2nin itemlerinin lenghtini kontrol ettirerek 2 basamaklı 3 basamaklı diye diğer memolara dağıtabilirsin.

kolay gelsin.
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ç

memo2.text:=ansireplacestr(memo1.text,'x','');
daha sonra satır satır uzunluklara bakarak istediğin memoya istediğin satırı atabilirsin.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

güzel kodmuş. 7 satır kodu yok etti bir anda ;)
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

bu function işine yarayabilir. rakamlar haricindeki herşeyi süzer.

function suz(deger:string):string;
var
cikis:string;
i:integer;
begin
cikis:='';
for i:=1 to length(deger) do
begin
If (deger in ['0'..'9',#8]) then
cikis:=cikis+deger;
end;
suz:=cikis;
end;


ve aralığı istediğin gibi değiştirebilirsin
ör:If (deger in ['a'..'z',#8]) then
ör:If (deger in ['A'..'Z',#8]) then
ör:If (deger in ['A'..'z',#8]) then
ör:If (deger in ['0'..'z',#8]) then
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Mesaj gönderen s1lv3r »

Tşkler kodlar için.

Kodların hepsi sağlamdı ama bu kod daha kısa olduğu için bununla devam edeyim istedim.

Kod: Tümünü seç

memo2.text:=ansireplacestr(memo1.text,'x',''); 
bunu şöyle değiştirerek istediğimi yaptım.

Kod: Tümünü seç

memo3.text:=ansireplacestr(memo2.text,'x',#13#10);
fakat şimdide iki tane yan yana x ler olduğu için bazen iki boşluk iniyor ve bir tanesi bomboş kalıyor.

Kod: Tümünü seç

85642240

4
7
49
5783385
48
3


9
Yeni bir eleme daha yapıp aradaki boşlukları kaldırmak istiyorum.

Kod: Tümünü seç

85642240
4
7
49
5783385
48
3
9
gibi ?
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
    Memo1.Text := AnsiReplaceStr(Memo1.Text, 'x', #13#10);
    for i := 0 to Memo1.Lines.Count - 1 do
    begin
        if Length(Memo1.Lines[i])>1 then
        begin
            Memo2.Lines.Add(Memo1.Lines[i]);
        end;
    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
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Mesaj gönderen s1lv3r »

Teşekkürler :)

Son birşey kaldı. Şimdi memoya attığım bu rakamları küçükten büyüğüe doğru sıralamak istiyorum.

memo içeri;

Kod: Tümünü seç

25465
52154
156
59
5
689
6565
bunu diğer memoya

Kod: Tümünü seç

5
59
156
689
6565
25465
52154
şeklinde sıralayacağım nasıl yapabilirim :roll:
Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam,

Yapmak istediğiniz şey basit bir bubble sort algoritması ile yazılır ve işin ilginç tarafı, okullarda bu algoritma anlatılmadan öğrencilere bu tür sıralama yaptırılır. Çünkü kod çok basit bir mantık üzerine kuruludur. Yani biraz düşününce çok rahat yapabilirsiniz diye düşünüyorum.

Benim dikkatimi çeken nokta biraz daha farklı. Eğer bu hızla bütün sorunları foruma çözdürecek olursanız siz bir şey öğrenemeyeceksiniz. Dikkat edersen verilen cevaplar dahice cevaplar değil, çünkü karşılaştığınız sorunlar çok ciddi ya da ilginç durumlar değil. Genelde basit bir döngü ve if şartı ile kolayca çözebileceğiniz sorunlar. Elbette projenizin tamamı buraya sorduklarınızdan oluşmayacaktır ama insan ister istemez programın geri kalan kısmının sadece forma çizdiğiniz buton, label vs olduğunu düşünüyor.

Lütfen yazdıklarımı yanlış anlamayın, size kızıyor ya da kınıyor (her ikisi de haddimi aşar) değilim. Sadece biraz daha uğraşmanız gerektiğini düşünüyorum. Bu sizin öğrenmeniz için çok daha yararlı olacaktır.

Lütfen bu mesajımı arkadaşça bir uyarı olarak düşünün. Eğer sizi kırdıysam şimdiden özür dilerim.

İyi çalışmalar,
Bahadır Alkaç
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Mesaj gönderen s1lv3r »

Opt2000 yazdı:Selam,

Yapmak istediğiniz şey basit bir bubble sort algoritması ile yazılır ve işin ilginç tarafı, okullarda bu algoritma anlatılmadan öğrencilere bu tür sıralama yaptırılır. Çünkü kod çok basit bir mantık üzerine kuruludur. Yani biraz düşününce çok rahat yapabilirsiniz diye düşünüyorum.

Benim dikkatimi çeken nokta biraz daha farklı. Eğer bu hızla bütün sorunları foruma çözdürecek olursanız siz bir şey öğrenemeyeceksiniz. Dikkat edersen verilen cevaplar dahice cevaplar değil, çünkü karşılaştığınız sorunlar çok ciddi ya da ilginç durumlar değil. Genelde basit bir döngü ve if şartı ile kolayca çözebileceğiniz sorunlar. Elbette projenizin tamamı buraya sorduklarınızdan oluşmayacaktır ama insan ister istemez programın geri kalan kısmının sadece forma çizdiğiniz buton, label vs olduğunu düşünüyor.

Lütfen yazdıklarımı yanlış anlamayın, size kızıyor ya da kınıyor (her ikisi de haddimi aşar) değilim. Sadece biraz daha uğraşmanız gerektiğini düşünüyorum. Bu sizin öğrenmeniz için çok daha yararlı olacaktır.

Lütfen bu mesajımı arkadaşça bir uyarı olarak düşünün. Eğer sizi kırdıysam şimdiden özür dilerim.

İyi çalışmalar,
Bahadır Alkaç
Teşekkürler, Arkadaşça bir tavsiye gibi kabul edeceğim. Zaten eksik olduğum alanlar o döngülerle ilgili ve bu döngülere tam olarak hakim olabilmek için döngü alıştırmaları yapıyorum. Bu yaptığım programda bu alıştırmalardan biri diyebiliriz. Sıralama ilgili birçok şeyi denedim kendim birşeyler ürettim fakat maalesef sonuca ulaşamadım. Sonra aramayı kullandım ama 20 küsür sayfa gezmeme rağmen yine istediğim sonuca ulaşamadım. Ve projemin son aşamaları olduğu için sabırsızlanıyorum bu yüzden soru sordum. Bir yandan tabiki bende kendim araştırıyorum, uğraşıyorum.

Projem şuan yaklaşık 2300 satıra ulaştı. Yani sadece işin içinden çıkamadığım noktalarda buradan yardım istedim. İnanın Label ve Buton eklemeler bunun 50 satırına bile denk gelmeyecektir.

Yinede tavsiyeniz için tşk ederim.
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla