string kopyalama sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

string kopyalama sorunu

Mesaj gönderen sr1111 »

memo alanimda asagidaki gibi 1500 adet kelime var alt alta bunlari nasil 400 er 400 er farkli string veya stringliste kopyalarim atarim. toplamda 4 tane string veya stringliste kopyalama yapacagim.

elma
armut
portakal
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: string kopyalama sorunu

Mesaj gönderen mkysoft »

döngü içinde yapabilitsiniz. string'e atarsanır birleşmiş olacaklardır. stringliste atmanız daha kolay görünüyor. önce string gridlerinizi tanımlayın daha sonra stringlist.add diyerek döngü içerisinde ekleyin. her stringlist için bir döngü kullanın.
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: string kopyalama sorunu

Mesaj gönderen sr1111 »

tesekkür ederim.
fakat döngüyü yapamadim.
memo1 deki kelimeleri 400 er 400 er paylastirmak, ayirmak istiyorum strignlist1, strignlist2,strignlist3, strignlist4 e
ornek yaparsaniz sevinirim.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: string kopyalama sorunu

Mesaj gönderen unicorn64 »

en azından ne yaptığınızı ve nerede nasıl bir sıkıntı yaşadığınızı yazsanız....
örneği sizin yazdığınızı düzenleyerek oluşturmuş oluruz belki... :wink:
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: string kopyalama sorunu

Mesaj gönderen sr1111 »

soyle bir sey yaptim olmadi.
burda yapmaya calisitigim 200 den sonrasının memo2 ye kopyalanmasiydi.
esas istedigim 1500 kayiti 200 er 200 er memo1, memo2 ..... veya stringliste tasimak ayri ayri

for I := 0 to memo1.Lines.count -1 do
Begin
if I mod 200 = 0 then
Memo2.Lines.Add(memo1.Lines);
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: string kopyalama sorunu

Mesaj gönderen unicorn64 »

mod işlemi bölümden kalanı verir ve yazdığınız kodla i 200ün tam katıysa demiş oluyorsunuz, yani 200.,400.,600. satırları aktarmış olursunuz...

* her 200lük kopyalama için ayrı ayrı döngü kurabilirsiniz

Kod: Tümünü seç

for i:=0 to 200 do
 .....

for i:=200 to 400 do
 .....
* yada mesela şu şekilde bir metod tanımlayıp,döngüyü metod içinde oluşturarak bu işi daha genel şekilde çözerbilirsiniz

Kod: Tümünü seç

procedure ListeKopyala(kimi,nereye:TstringList;baslangic,adet:integer);
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: string kopyalama sorunu

Mesaj gönderen sr1111 »

unicorn64 tesekkur ederim. cok yardimci oldun.

bu 200 er bolmemin sebebi sizin daha onceki konu da verdiginiz ornekte cok yavasladigi icin bolmek zorunda kaldim. asagidaki gibi kullandim. ve stringkontrol deki harfler neredeyse 70 kadar. ve cok yavas calisiyor.

simdi ise sorun kilitlenme yapiyor asagidaki gibi yaptim.

for j:=0 to 200 do
Begin
st.Add(memo1.Lines[j]);
for I := 0 to st.Count - 1 do
begin
.......

un
unicorn64 yazdı:mod işlemi bölümden kalanı verir ve yazdığınız kodla i 200ün tam katıysa demiş oluyorsunuz, yani 200.,400.,600. satırları aktarmış olursunuz...

* her 200lük kopyalama için ayrı ayrı döngü kurabilirsiniz

Kod: Tümünü seç

for i:=0 to 200 do
 .....

for i:=200 to 400 do
 .....
* yada mesela şu şekilde bir metod tanımlayıp,döngüyü metod içinde oluşturarak bu işi daha genel şekilde çözerbilirsiniz

Kod: Tümünü seç

procedure ListeKopyala(kimi,nereye:TstringList;baslangic,adet:integer);
En son sr1111 tarafından 21 Mar 2012 11:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: string kopyalama sorunu

Mesaj gönderen Hakan Can »

TMemo ve TStringList işlemlerinde "BeginUpdate" ve "EndUpdate" kullanırsanız hızlanma sağlarsınız.

Örnek kod:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  Memo1.Lines.BeginUpdate;
  try
    for I := 0 to 100000 - 1 do Memo1.Lines.Add(FormatFloat('0000000000000', I));
  finally
    Memo1.Lines.EndUpdate;
  end;
end;
Cevapla