txt den veri okuma

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
kagakadir
Üye
Mesajlar: 32
Kayıt: 11 Eki 2010 11:52

txt den veri okuma

Mesaj gönderen kagakadir »

arkadaşlar merhaba
forumda araştırdım ama tam istediğim konuyu bulmadım

delphide yeni olduğumu belirterek sorunumu özetliyim

bilgisayardaki konumu sabit olan (örneğin c:\deneme.txt) txt dosyasından veri okumak istiyorum

ama her satırın 22 ile 32. karakterlerin arasını okumak istiyorum
bunu nasıl yapabilirim seviyemide gözeterek yardımcı olabilirmisiniz?
şimdiden ilgilenen arkadaşlara teşekkür ederim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: txt den veri okuma

Mesaj gönderen vkamadan »

merhaba ,
formunuza iki adet TMemo ekleyin birncisinin adı MemoKaynak diğeri MemoHedef olsun, bir TButton ekleyin, TButton un OnClick olayına ;

Kod: Tümünü seç

var
 i: Integer ;
begin
   MemoKaynak.Lines.LoadFromFile( 'c:\Deneme.txt' );

   for i:= 0 to MemoKaynak.Lines.Count - 1 do
     begin
        MemoHedef.Lines.Add( Copy( MemoKaynak.Lines[i] , 22 , (32 - 22) ) );
     end;


end;

Copy fonksiyonu 3 parametre alır, birinci parametre kaynak dinamik dizi dir, örn : String ikinci parametre başlangıç konumu üçüncü parametre alınacak eleman sayısını belirtir ve geriye dinamik dizi döndürür.
Açık olması için memo kullandım siz arka planda TStringList de kullanabilirsiniz TMemo.Lines ile aynı özelliklere sahiptir.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
kagakadir
Üye
Mesajlar: 32
Kayıt: 11 Eki 2010 11:52

Re: txt den veri okuma

Mesaj gönderen kagakadir »

vkadaman hocam büyüksün
çok teşekkür ederim

sizden son bir yardım daha istiycem
tamam gönderdiğiniz şekilde 22 ile 32. karakterler arasını okuduk
şöyle bir şey yapma imkanımız var mı acaba
22 ie 32. karakterler arasını yazdıktan sonra 5 karakter boşluk bırakıp 45 ile 55. karakter arasını yazdıra bilirmiyiz

görünüm olarak şöyle olacak yani

222222 555555
2 ler 22-32 arası 5 ler 45-55 arasını ifade ediyor
teşekkür ederim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: txt den veri okuma

Mesaj gönderen vkamadan »

mevcut copy fonksiyonun devamına "+" operatörüyle önce vermek istediğiniz boşluğu ekleyin sonra tekrar "+" ile yeni parçayı ekleyin

Kod: Tümünü seç

MemoHedef.Lines.Add( Copy( MemoKaynak.Lines[i] , 22 , (32 - 22) ) + '     ' +  Copy( MemoKaynak.Lines[i] , 45 , (55 - 45) ));
Volkan KAMADAN
www.polisoft.com.tr
kagakadir
Üye
Mesajlar: 32
Kayıt: 11 Eki 2010 11:52

Re: txt den veri okuma

Mesaj gönderen kagakadir »

hocam inan hızır gibi yetiştin çok ama çok teşekkür ederim

Hazır senden yüz bulmuşken bir şey daha sorabilirmiyim müsadenle (direkt sormuyorum önce uğraşıyorum ama dediğim gibi yeniyim beceremiyorum)

dediğiniz şekilde sistem çok güzel çalıştı

Memo2.Lines.Add( Copy( Memo1.Lines , 3 , (6 - 3) )
+ ' ' + Copy( Memo1.Lines , 24 , (27 - 23))
+ ' ' + Copy( Memo1.Lines , 69 , (89 - 69))
+ ' ' + Copy( Memo1.Lines , 90 , (99 - 90))
+ ' ' + Copy( Memo1.Lines , 213 , (220 - 213))
+ ' ' + Copy( Memo1.Lines , 220 , (225 - 220))
+ ' ' + Copy( Memo1.Lines , 225 , (230 - 225))
+ ' ' + Copy( Memo1.Lines , 230 , (235 - 230))
+ ' ' + Copy( Memo1.Lines , 235 , (245 - 235))
);



Memo2.Lines.Add( Copy( Memo1.Lines , 3 , (6 - 3) )
+ ' ' + Copy( Memo1.Lines[i] , 24 , (27 - 23))
+ ' ' + Copy( Memo1.Lines[i] , 162 , (182 - 162))
+ ' ' + Copy( Memo1.Lines[i] , 182 , (191 - 182))

);
BU şekilde formu oluşturduğum zaman

50 2450 kkkkkkkkkkkkkkkkkkkk 10538-0 TL100 85 100
50 2450 lllllllllllllllllllllllllllllllllllllllllllll 010596-0
60 2450 mmmmmmmmmmmmm 10524-0 TL100 85 100
60 2450 nnnnnnnnnnnnnnnnnnnnn 010526-0
70 2450 ooooooooooooooooooooo 10524-0 TL100 85 120
70 2450 ppppppppppppppppppppp 010596-0

yukarıdaki gibi sonuç elde ediyorum burdaki sıkıntım k,l,m,n,o,p olarak yazdığım aralıklar bazen 1 harf eksik oluyor dolayısıyla dikey hizalar bozuluyor
bunun önüne geçebilirmiyim

son sorumda en son okuttuğumuz 85 ile 100 değerini ben aslında okutmak istemiyorum bunun yerine bunların çarpımını son haneye koymam lazım
bu yapılabilirmi?

çok soru sordum farkındayım yardımcı olursanız gerçekten çok sevinirim
Cevapla