txt kayıt girişi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

txt kayıt girişi

Mesaj gönderen dogan »

Selamlar... Bir kelimede ( , ) varsa listviewde yan kolona ( ; ) varsa bir alt satıra geçecek..

Örnek:
Mersedes, Mustafa Yılmaz; Volvo, Nedim türk

Kod: Tümünü seç

procedure TForm1.ExcelClick(Sender: TObject);
var
  Str: String;
  A: TStringList;
  I: Integer;
begin
  Str := 'Mersedes, Mustafa Yılmaz; Volvo, Nedim türk';
  A := TStringList.Create;
  A.StrictDelimiter := True;
  A.Delimiter := ',';
  A.DelimitedText := Str;
  for I := 0 to (A.Count - 1) do
    with ListView1.Items.Add do
    begin
      Caption := IntToStr(ListView1.Items.Count);
      SubItems.Add((A[I]));
    end;
end;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: txt kayıt girişi

Mesaj gönderen SimaWB »

dogan yazdı:Selamlar... Bir kelimede ( , ) varsa listviewde yan kolona ( ; ) varsa bir alt satıra geçecek..
NEZAKETEN en azından bir soru cümlesi kursanız?

Verdiğiniz kod örneğinde Delimiter'ı noktalı virgül yaparsanız her bir satıra erişmiş olursunuz. Sonrasında her satırı da virgüle göre ayrıştırırsanız probleminiz çözülmüş olur.
There's no place like 127.0.0.1
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: txt kayıt girişi

Mesaj gönderen dogan »

SimaWB yazdı:
dogan yazdı:Selamlar... Bir kelimede ( , ) varsa listviewde yan kolona ( ; ) varsa bir alt satıra geçecek..
NEZAKETEN en azından bir soru cümlesi kursanız?

Verdiğiniz kod örneğinde Delimiter'ı noktalı virgül yaparsanız her bir satıra erişmiş olursunuz. Sonrasında her satırı da virgüle göre ayrıştırırsanız probleminiz çözülmüş olur.

Pardon hocam haklısınız :mrgreen:


Hocam virgül ile noktalı virgül işlemlerini bir arada yatıramıyorum, yani noktalı virgül varsa alt satıra sadece virgül varsa yan kolana yazdırmadım...
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: txt kayıt girişi

Mesaj gönderen unicorn64 »

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
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: txt kayıt girişi

Mesaj gönderen dogan »

txt kayıt girişi girişini maalesef yapamadım, sağ olun sizlerde zaten doğuştan bu yeteneğe sahipsiniz iki satır yazıp yardımcı olmadınız...
Laf geçirmek için neler yazacaksınız merak ediyorum...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: txt kayıt girişi

Mesaj gönderen mrmarman »

Hocam sen de çanak tutma istersen. Yazacağı olanı da engelliyorsun farkında mısın... Taraf değildim ama sen genelleyince lafın bize de uzanıyor ... İki satır kod bir şeydi de nasıl oldu da sonuca ulaşamadın ? Demek ki yazdığın kod da ezbere de ondan.

Forumda yeni de sayılmazsın aslında. Hayatta her zaman bir destekçin olmayacak. Bu da bir ders aslında.
Önce bir çözüme ilişkin bir kaç deneme yapmanı bekliyoruz biliyorsun. Sen de kendini ezilmiş gibi hissedeceğine, bir kaç satır kod yazma zahmetine girsen devamını hiç geri çevirmedik biliyor olman lazım bunları.

Senden de devam kod gelmeyince ne yapalım sen söyle ? Neyi yanlış anladığını nereden anlayacağız ? Verdiğin kod çalışıyor olduğu görünüyor. Her bir satırı noktalıvirgülden ayırıp elde ettiğin her satırı yeni bir alt / iç for döngüsü ile bu defa virgülle ayıramıyor olmanı anlayamıyorum. Çünkü kod yazarak for döngünü nerede yanlış kurduğunu bilemiyoruz. Üstü örtülü sorular bu tip cevapları hak ediyor kusura bakma lütfen.

Biz de emrine amade kod yazmak için sırada bekleyen işi boş insanlar değiliz kabul edersin ki. Hiç bir şey yazmayıp akışına da bırakırdım son mesajından sonra bunları yazmasam olmazdı. Başlığa cevap yazanlardan şimdiden özür dilerim. :?:

Soruna gelinde @SimaWB cevabını çok güzel vermiş, değerlendirmeye almamışsın. Onun cevabına göre kod aşağıdaki şekilde. Lütfen inceleyip öğrenmeye çalış.

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Str: String;
  A, B  : TStringList;
  I, J  : Integer;
begin
  Str := 'Mersedes, Mustafa Yılmaz; Volvo, Nedim türk';
  A   := TStringList.Create;
  B   := TStringList.Create;
  Try
    A.Delimiter       := ';';
    A.StrictDelimiter := True;
    A.DelimitedText   := Str;
    for I := 0 to (A.Count - 1) do //bu noktalıvirgüller
    begin
      with ListView1.Items.Add do
      begin
        Caption := IntToStr(ListView1.Items.Count);
        B.Delimiter       := ',';
        B.StrictDelimiter := True;
        B.DelimitedText   := Trim( A[i] );
        for j := 0 to (B.Count-1) do  // bu da virgüller
        begin
          SubItems.Add( Trim(B[j]) );
        end;
      end;
    end;
  Finally
    A.Free;
    B.Free;
  End;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: txt kayıt girişi

Mesaj gönderen dogan »

Hocam teşekkür ederim ilginize, istemeden kırdıysam form arkadaşlarımdan özür dilerim....
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: txt kayıt girişi

Mesaj gönderen xozcanx »

:/ Yere Düşen Torba, içinde Yumurtaların olduğu torbadır!
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: txt kayıt girişi

Mesaj gönderen hido »

Selamlar,

Ben opendialog ekleyerek farklı txt dosyalarını listviewe almak için ufak bir değişiklik yaptım, ancak aldığım tüm txt çince oluyor acaba nerede hata yapıyorum?...

Resim

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  Str: TStrings;
  A, B: TStringList;
  I, J: Integer;
begin
  With TOpenDialog.Create(Nil) do
  begin
    Filter := 'Txt dosyaları (*.Txt)|*.txt';
    if Execute then
    begin
      Str.LoadFromFile(Filename);
      A := TStringList.Create;
      B := TStringList.Create;
      try
        A.Delimiter := ';';
        A.StrictDelimiter := True;
        A.DelimitedText := String(Str);
        for I := 0 to (A.Count - 1) do // bu noktalıvirgüller
        begin
          with ListView1.Items.Add do
          begin
            Caption := IntToStr(ListView1.Items.Count);
            B.Delimiter := ',';
            B.StrictDelimiter := True;
            B.DelimitedText := Trim(A[i]);
            for J := 0 to (B.Count - 1) do // bu da virgüller
            begin
              SubItems.Add(Trim(B[J]));
            end;
          end;
        end;
      finally
        A.Free;
        B.Free;
      end;
    end;
  end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: txt kayıt girişi

Mesaj gönderen mrmarman »

Kodda başka sorunlar var.

1. str için tstrings demişsin. Bunu TStringList yap.
2. str'yi A ve B gibi hele bir create et ondan sonra loadfrom file ile içine text dosyayı alırsın.
3. String(str) diye içeriği almaya çalışmışsın, doğrusu str.text olmalı.
4. Finnaly kısmında create ettiğin str'yi free etmeyi unutma.
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: txt kayıt girişi

Mesaj gönderen hido »

Hocam dediklerinizi aynen yaptım teşekkür ederim yardımlarınız için,

Fakat bu seferde fazladan bir satır ekliyor resimde olduğu gibi...

Resim

Kod: Tümünü seç

var
  Str, A, B: TStringList;
  I, j: Integer;
begin
  With TOpenDialog.Create(Nil) do
  begin
    Filter := 'Txt dosyaları (*.Txt)|*.txt';
    if Execute then
    begin
      Str := TStringList.Create;
      A := TStringList.Create;
      B := TStringList.Create;
      try
        Str.LoadFromFile(Filename);
        A.Delimiter := ';';
        A.StrictDelimiter := True;
        A.DelimitedText := Str.Text;
        for I := 0 to (A.Count - 1) do // bu noktalıvirgüller
        begin
          with ListView1.Items.add do
          begin
            Caption := IntToStr(ListView1.Items.Count);
            SubItems.add(FormatDateTime('dd.mm.yyyy', Now));
            SubItems.add(ChangeFileExt(ExtractFileName(Filename), ''));
            B.Delimiter := ',';
            B.StrictDelimiter := True;
            B.DelimitedText := Trim(A[i]);
            SubItems.add(' ');
            for j := 0 to (B.Count - 1) do // bu da virgüller
            begin
              SubItems.add(Trim(B[j]));
            end;
          end;
        end;
      finally
        Str.Free;
        A.Free;
        B.Free;
      end;
    end;
  end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: txt kayıt girişi

Mesaj gönderen mrmarman »

Kod: Tümünü seç

 with ListView1.Items.add do
Dediğin yerin önüne bir if sorgusu ekle. De ki o satır boş değilse bunu çalıştırsın.

Bunu bir çalış sonucu bildir.
Resim
Resim ....Resim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: txt kayıt girişi

Mesaj gönderen brs »

Mrmarman hocam müsaadenizle :D Arkadaşa ben yardımcı olayım...

Hatalı:

Kod: Tümünü seç

 for I := 0 to (A.Count - 1) do // bu noktalıvirgüller
 begin
 with ListView1.Items.add do
 begin

Doğru:

Kod: Tümünü seç

 begin
with ListView1.Items.add do
 begin
 for I := 0 to (A.Count - 1) do // bu noktalıvirgüller
begin
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla