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
txt den veri okuma
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.
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.
Re: txt den veri okuma
merhaba ,
formunuza iki adet TMemo ekleyin birncisinin adı MemoKaynak diğeri MemoHedef olsun, bir TButton ekleyin, TButton un OnClick olayına ;
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.
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;
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
www.polisoft.com.tr
Re: txt den veri okuma
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
ç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
Re: txt den veri okuma
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
www.polisoft.com.tr
Re: txt den veri okuma
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
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