TStrings.count

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

TStrings.count

Mesaj gönderen cihan »

Arkadaşlar tstrings yada tstringlist de count alamıyorum memoya
aktardığımda alabiliyorum bu tstrings yada tstringlist deki count ne işe yarıyor yada bunun içindeki satır sayısını nasıl alabilirim.

Yardımlarınız için teşekkürler
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Count satır sayısını almak için
ama direk alamazsın. önce tstrings nesnesini create etmen lazım. Create ediyor musun
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Mesaj gönderen cihan »

Lost Soul yazdı:Count satır sayısını almak için
ama direk alamazsın. önce tstrings nesnesini create etmen lazım. Create ediyor musun

evet create ediyorum ama sonuç hep aynı dönüyor halbuki tstrings deki bilgiyi memoya aktardığım zaman ordan doğru satır sayısını alıyorum
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- TStringList'de neden sayı alamadığınızı bilemem, kurguyu aşağıdaki gibi yapıp bir deneyin. Muhtemelen TStringList için create işlemi yapmadınız.

Kod: Tümünü seç

Var
  Sayac      : Integer;
  StringList : TStringList;
  Strings    : TStrings;
  ListBox    : TListBox;
begin
  StringList := TStringlist.Create;
    For Sayac := 1 to 10 do
      StringList.Add( IntToStr(Sayac) );
    ShowMessageFmt('StringList Eleman Sayısı = %d', [ StringList.Count ]);
  StringList.Free;

  ListBox := TListBox.Create(Self);
    ListBox.Parent := Self;
    For Sayac := 1 to 25 do
      ListBox.Items.Add( IntToStr(Sayac) );
    Strings := ListBox.Items;
    ShowMessageFmt('Strings Eleman Sayısı = %d', [ Strings.Count ]);
    Strings := Nil;
  ListBox.Free;
end;
- TStrings'de ise olay biraz farklı işler. Variable olarak tanımladığınızda Add olsun Count olsun propertylerine direkt erişimi yoktur. TStrings tipindeki veriyi temsil eder. Örneğin sizdeki TMemo örneğideki Lines veya TListBox'ın verileri TStrings tipindedir. Onu atayarak Strings tipindeki içeriği elde edebilir görebilirsiniz. Tabi pointer bazında atama yapıldığından TStrings içeriğinde silme işlemi yaparsanız unutmamanız gereken nokta kaynak da bundan nasibini alacaktır. Çünkü atanan ve atanılan birlikte tek bir kaynak ediyor.

- Kısaca siz TStringList kullanırsanız başınız bu sorularla ağrımaz.
Resim
Resim ....Resim
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Mesaj gönderen cihan »

mrmarman yazdı:Merhaba...

- TStringList'de neden sayı alamadığınızı bilemem, kurguyu aşağıdaki gibi yapıp bir deneyin. Muhtemelen TStringList için create işlemi yapmadınız.

Kod: Tümünü seç

Var
  Sayac      : Integer;
  StringList : TStringList;
  Strings    : TStrings;
  ListBox    : TListBox;
begin
  StringList := TStringlist.Create;
    For Sayac := 1 to 10 do
      StringList.Add( IntToStr(Sayac) );
    ShowMessageFmt('StringList Eleman Sayısı = %d', [ StringList.Count ]);
  StringList.Free;

  ListBox := TListBox.Create(Self);
    ListBox.Parent := Self;
    For Sayac := 1 to 25 do
      ListBox.Items.Add( IntToStr(Sayac) );
    Strings := ListBox.Items;
    ShowMessageFmt('Strings Eleman Sayısı = %d', [ Strings.Count ]);
    Strings := Nil;
  ListBox.Free;
end;
- TStrings'de ise olay biraz farklı işler. Variable olarak tanımladığınızda Add olsun Count olsun propertylerine direkt erişimi yoktur. TStrings tipindeki veriyi temsil eder. Örneğin sizdeki TMemo örneğideki Lines veya TListBox'ın verileri TStrings tipindedir. Onu atayarak Strings tipindeki içeriği elde edebilir görebilirsiniz. Tabi pointer bazında atama yapıldığından TStrings içeriğinde silme işlemi yaparsanız unutmamanız gereken nokta kaynak da bundan nasibini alacaktır. Çünkü atanan ve atanılan birlikte tek bir kaynak ediyor.

- Kısaca siz TStringList kullanırsanız başınız bu sorularla ağrımaz.


cevabınız için teşekkür ederim yalnız sizin dediğinizi daha önce denedim yine olmadı

sorunumu daha net açıklayayım.

Kod: Tümünü seç

function HTMLParse(Bilgi:TStrings):TStrings;
var sonuc:tstringlist;
sat,bas,son:integer;
satir:string;
begin
sonuc:=tstringlist.Create;
sonuc.AddStrings(bilgi);
form1.Caption:=inttostr(sonuc.Count-1);
for sat:=0 to sonuc.Count-1 do
[quote]
bir şey yanlış gidiyor ama ne bir türlü bulamadım[/quote]
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

sonuc degiskenini tanıtırken tstringlist olarak değil

Kod: Tümünü seç

var  sonuc  tstrings 
olarak tanıt.
create ederken gene Tstringlist.Create olarak kalsın
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Mesaj gönderen cihan »

Lost Soul yazdı:sonuc degiskenini tanıtırken tstringlist olarak değil

Kod: Tümünü seç

var  sonuc  tstrings 
olarak tanıt.
create ederken gene Tstringlist.Create olarak kalsın
sonuç yine hüsran arkadaşlar her şekildede 0 satır getiriyor
halbuki memoya attığımda 138
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
Tamamen TStringList kullanmalısın TStrings lerin hepsini TStringList olarak değiştirmeni öneririm.
İyi çalışamalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

sonuc.AddStrings(bilgi);

yerine

sonuc.Assign(bilgi)
kullanırsan düzelir bence
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Mesaj gönderen cihan »

vkamadan yazdı:Merhaba,
Tamamen TStringList kullanmalısın TStrings lerin hepsini TStringList olarak değiştirmeni öneririm.
İyi çalışamalar.

hepsini denedim yinede olmuyor sorunun nereden kaynaklandığını tespit
ettim tstringlist yada tstings e webbrowser dan stream kullanarak veri aktarıldığı zaman tek satır içine bütün bilgiyi alıyor doğal olarak count 1
cevabı dönüyor ama işin ilginç tarafı bu bilgiyi memoya aktardığınız zaman
kayıt düzeliyor ve count gerçek değerini veriyor.

sormak istediğim memo.lines tstrings tipinde olmasına rağmen bu bilgiyi doğru alırken bir başka tstrings yada tstringliste aktardığımız zaman neden düzelmiyor da tek satır getiriyor?

teşekkürler ilgilenen arkadaşlara ama hala sorunu çözemedim.

Yapmak istediğim şey aslında çok basit ama takıldım webbrowserdan
bilgileri bir tstrings doldurup bu tstrings içinde parse edip düzgün halini
tstrings olarak çıkan bir function yazmaktı. Ama count ile satır sayısı gelmediği için parse işlemi için yazdığım function çalışamıyor çünkü ne kadar kayıt aktarırsanız aktarın count tek satır dönderiyor.
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Mesaj gönderen hgunes »

Bi de aşağıdaki şekilde deneyin

Kod: Tümünü seç

Sonuc.Text := Bilgi;
Bu kodun bilgi stringi içindeki satır sonu karakterine göre stringi satırlara bölmesi lazım.
Cevapla