Listview LoadFromFile ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Listview LoadFromFile ?
Merhaba arkadaşlar ilk olarak yardımlarınızdan ötürü teşekkür ederim.
Listview hakkında bir sorum olucaktır.
Listview columns'ları bir txt dosyasındaki metinlerle yüklüyorum ve columns'ları bu şekilde oluşturuyorum.
Her oluşturduğum columns'ada farklı bir dosyadan yükleme yaptırmak istiyorum.
Yani Örnek Şema :
Columns1 | Columns2 | Columns3
Columns1'e x1.txt
Columns2'ye x2.txt'yi vs vs şeklinde yüklemek istiyorum.
x1,x2,... olark giden txt dosya isimlerini columns.caption'dan almasını istiyorum. Örneğin Columns1'e columns1.txt dosyasını yüklemesi columns2 ye column2.txt'yi yüklemesi.
inc ve while yöntemleri ile bunu denedim velakin ilk satırlara yükleme yaptırıyor ve txt içerisindeki son mesajı yüklüyor döngü göreği. Bu konufda bana yardımcı olabilirmisiniz.
Listview hakkında bir sorum olucaktır.
Listview columns'ları bir txt dosyasındaki metinlerle yüklüyorum ve columns'ları bu şekilde oluşturuyorum.
Her oluşturduğum columns'ada farklı bir dosyadan yükleme yaptırmak istiyorum.
Yani Örnek Şema :
Columns1 | Columns2 | Columns3
Columns1'e x1.txt
Columns2'ye x2.txt'yi vs vs şeklinde yüklemek istiyorum.
x1,x2,... olark giden txt dosya isimlerini columns.caption'dan almasını istiyorum. Örneğin Columns1'e columns1.txt dosyasını yüklemesi columns2 ye column2.txt'yi yüklemesi.
inc ve while yöntemleri ile bunu denedim velakin ilk satırlara yükleme yaptırıyor ve txt içerisindeki son mesajı yüklüyor döngü göreği. Bu konufda bana yardımcı olabilirmisiniz.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: Listview LoadFromFile ?
Şöyle halledilebilir diye düşünüyorum:
öncelikle dosya içeriği bir stringlist e aktarılır öncelikle stringlistin count değeri alınır repeat until ile stringlist count birer düşürülerek aynı zamanda listview nesnesinede birer eklenir şöyleki:
Kodlarda ufak aksaklıklar olabilir deneme imkanım yoktu
kolay Gelsin
öncelikle dosya içeriği bir stringlist e aktarılır öncelikle stringlistin count değeri alınır repeat until ile stringlist count birer düşürülerek aynı zamanda listview nesnesinede birer eklenir şöyleki:
Kod: Tümünü seç
var stl:tstringlist;
STLCount,i:integer;
begin
i:=0;
stl:=tstringlist.create;
stl.loadfromfile(dosya adın); //stringlist e dosyayı yükle
STLCount:=stl.count; //stringlist in değer sayısını al
repeat // stringlist değeri 0 olana dek dönecek döngü
i:=i+1;
STLCount:=STLCount-1; //stringlist değer sayısından bir çıkart
listview1.items.add; //listview e 1 ekle
listview.items.item[i].Caption:=STL.sring[i]); //eklenen listview nesnesine stringlsitteki değeri aktar
until STLCount=0; // stringlist değeri 0 olana dek dönecek döngü
//alt item eklemek içinse
listview.items.item(i).subitems.add(STL.strings[i]); //ana değere eklenmiş alt değere stringlist değeri aktar
//burada listview.items.item(i) ana değerin konumu
//ubitems.add(STL.strings[i]); alt değerin konumu
kolay Gelsin
UWESIS CORPORATION
Re: Listview LoadFromFile ?
Bir kısımda problem var !
Colums1 haliyle additems oluyor comluns2 haliyle addsubitems oluyor.
Bunu tek döngüyle yapamıyormuyum izlediğim kod şöyle birşey.
Bu kodla Lang.txt içerisindeki her satırı columns olarak belirliyor. Şimdi txt içerisinde Türkçe , ingizlice yazıyor. bunları columns.caption olarak belirliyor. Buradan columns captionları değer alarak dosya uzantısını ekletip o columns'a o dosyaya ait içeriği yükletmek amacım.
Devamında izlediğim ve tıkandığım kısım şurası .
Umarım anlatabilmişimdir.
Colums1 haliyle additems oluyor comluns2 haliyle addsubitems oluyor.
Bunu tek döngüyle yapamıyormuyum izlediğim kod şöyle birşey.
Kod: Tümünü seç
AssignFile(oku,'Lang\Lang.txt');
Reset(oku);
While not eof(oku) do
begin
Readln(oku,satir);
ListView1.Columns.Add.Caption:=(satir);
end;
Devamında izlediğim ve tıkandığım kısım şurası .
Kod: Tümünü seç
AssignFile(oku,'Lang\' + ListView1.Columns.Items[0].Caption +'.lng'); //Burada her columns'değerini alması lazım !
Reset(oku);
While not eof(oku) do
begin
i1:=; // Burada Dosyanın count'unun belirtemediğim için satır numarasını alamadım.
for i:=0 to i1-1 do
Readln(oku,satir);
ListView1.Items.Add;
ListView1.Items[i].Caption:=satir; // yukarısı hallolsa burası oluyor sanırım.
end;
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: Listview LoadFromFile ?
Dosyanın count değerini belirleyemiyorum demişsin bence şu an aklıma gelen en akıllıca yöntem dosyayı bir stringlist e aktarıp countu belirleyip o stringlist içerisindeki değerler bitene kadar listview e değer aktarımı yapmak
UWESIS CORPORATION
Re: Listview LoadFromFile ?
Verdiğin code ilede düzenleyip deneme yaptım velaki subitems'e ekleme yapmıyor döngüde. Verdiğin kodda şöyle bir olay söz konusu oluyor.
STL.LoadFromFile('Lang\'+ ListView1.Columns.Items.Caption +'.lng');
Bunun için while döngüsümü kullanmalıyım. Yoksa
ListView1.Columns.Count; değerini alıptamı atamalıyım.
STL.LoadFromFile('Lang\'+ ListView1.Columns.Items.Caption +'.lng');
Bunun için while döngüsümü kullanmalıyım. Yoksa
ListView1.Columns.Count; değerini alıptamı atamalıyım.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: Listview LoadFromFile ?
while değilde downto döngüsü de iş görebilir stringlistin count değerini 0 a düşene kadar kontrol edip ekleme yapabilirsin
UWESIS CORPORATION
Re: Listview LoadFromFile ?
sorun şu yapmaya çalıştığın şey listview da önce dosya isimleri sonra da dosyaların yollarını göstermek mi?
dosya1 c:\dosya1
dosya2 c:\dosya2
gibi?
dosya1 c:\dosya1
dosya2 c:\dosya2
gibi?
UWESIS CORPORATION
Re: Listview LoadFromFile ?
Hayır öyle değil.
Listview başlıklarını (columns) Bir txt dosyasından yükletiyorum
C:\Diller.txt
Sonra her başlığın (columns) adını alarak bir diğer dosyaya erişiyor.
Yani Columns adı Türkçe bundan yola çıkarak C:\Türkçe.txt dosyasını alıyor.
ve bunu ilgili başlığa (columns) yüklemesini istiyorum. Türkçe başlıpının altına türkçe.txt'dekiler ingilizceye ingilizce.txt'dekiler.
Listview başlıklarını (columns) Bir txt dosyasından yükletiyorum
C:\Diller.txt
Sonra her başlığın (columns) adını alarak bir diğer dosyaya erişiyor.
Yani Columns adı Türkçe bundan yola çıkarak C:\Türkçe.txt dosyasını alıyor.
ve bunu ilgili başlığa (columns) yüklemesini istiyorum. Türkçe başlıpının altına türkçe.txt'dekiler ingilizceye ingilizce.txt'dekiler.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: Listview LoadFromFile ?
her ne kadar ne yapmak istediğini tam olarak anlamasamda bir örnek daha hazırladım: benim c de 1.txt ve 2.txt isimli iki dosyam var bu dosyalardan 1.txt nin içeriğini önce sl e sonrada listview e 2.txt yi ise önce sl1 e sonra listview e aktarıyorum şu şekilde;
Kod: Tümünü seç
var sl,sl1:tstringlist;
slcount,i:integer;
begin
i:=0;
sl:=TStringList.Create;
sl1:=TStringList.Create;
sl.LoadFromFile('C:\1.txt');
sl1.LoadFromFile('C:\2.txt');
slcount:=sl.Count;
repeat
slcount:=slcount-1;
i:=i+1;
ListView1.Items.Add;
ListView1.Items.Item[i-1].Caption:=sl.Strings[i-1];
ListView1.Items.Item[i-1].SubItems.Add(sl1.Strings[i-1]);
until slcount=0;
end;
UWESIS CORPORATION
Re: Listview LoadFromFile ?
şunuda belirtmeliyim ben burda örnek olması açısından iki dosyanın içeriğinin eşit satırlarda olduğunu varsayarak işlem yaptım gözardı edersen yanılırsın eğer değerler eşit değilse ayrı ayrı işlemler yapmalısın.
UWESIS CORPORATION
Re: Listview LoadFromFile ?
Bu verdiğin kod bu şekilde çalışıyor tekrar teşekkür ederim.
Yalnız 1.txt 2.txt diye yani dosyalar belirli.
Bunda dosyalar belirli değil. 1 columns varsa bir dosya 5 columns varsa 5 dosya yani sabit birşey değil..
Bu değişkenliğe karşı ne gibi bir yol izleyeceğim.. Bunun için tek birtane stringslist kullanmam gerekiyor sanıyorum.
Yalnız 1.txt 2.txt diye yani dosyalar belirli.
Bunda dosyalar belirli değil. 1 columns varsa bir dosya 5 columns varsa 5 dosya yani sabit birşey değil..
Bu değişkenliğe karşı ne gibi bir yol izleyeceğim.. Bunun için tek birtane stringslist kullanmam gerekiyor sanıyorum.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: Listview LoadFromFile ?
şöyle bir değişiklik yapsak sanırım iş görür tabi başka yollarıda vardır ama şu an imkanım sınırlı:
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var sl,sl1:tstringlist;
slcount,sl1count,i:integer;
begin
i:=0;
sl:=TStringList.Create;
sl1:=TStringList.Create;
sl.LoadFromFile('C:\1.txt');
sl1.LoadFromFile('C:\2.txt');
slcount:=sl.Count;
sl1count:=sl1.Count;
if sl1count>slcount then
repeat
sl1count:=sl1count-1;
ListView1.Items.Add; //hangisindeki değer fazlaysa ona göre item eklenecek
until sl1count=0;
sl1count:=sl1.Count;
if slcount>sl1count then
repeat
slcount:=slcount-1;
ListView1.Items.add;
until slcount=0;
slcount:=sl.Count;
repeat
slcount:=slcount-1;
i:=i+1;
ListView1.Items.Item[i-1].Caption:=sl.Strings[i-1];
until slcount=0;
i:=0;
repeat
sl1count:=sl1count-1;
i:=i+1;
ListView1.Items.Item[i-1].SubItems.Add(sl1.Strings[i-1]);
until sl1count=0;
end;
UWESIS CORPORATION
Re: Listview LoadFromFile ?
işi birazdaha uzun bir kodla hallettim ve sınırlama koymak zorunda kaldım. Ama yaptığım uzun kod umarım tam olarak ne yapmaya çalıştığımı anlamanıza belki yardımcı olur 
Ve bundaki sınırlamayı kaldırıp sınırsız umarım yapabileceğim bir yöntem bulabilirim.

Ve bundaki sınırlamayı kaldırıp sınırsız umarım yapabileceğim bir yöntem bulabilirim.
Kod: Tümünü seç
i:=0;
sl:=TStringList.Create;
sl1:=TStringList.Create;
sl2:=TStringList.Create;
sl3:=TStringList.Create;
sl4:=TStringList.Create;
sl5:=TStringList.Create;
sl.LoadFromFile('Lang\'+ ListView1.Columns.Items[0].Caption +'.txt');
i1:=ListView1.Columns.Count;
if i1 > 1 Then
begin
sl1.LoadFromFile('Lang\'+ ListView1.Columns.Items[1].Caption +'.txt');
end;
if i1 > 2 Then
begin
sl2.LoadFromFile('Lang\'+ ListView1.Columns.Items[2].Caption +'.txt');
end;
if i1 > 3 Then
begin
sl3.LoadFromFile('Lang\'+ ListView1.Columns.Items[3].Caption +'.txt');
end;
if i1 > 4 Then
begin
sl4.LoadFromFile('Lang\'+ ListView1.Columns.Items[4].Caption +'.txt');
end;
if i1 > 5 Then
begin
sl5.LoadFromFile('Lang\'+ ListView1.Columns.Items[5].Caption +'.txt');
end;
slcount:=sl.Count;
repeat
i1:=ListView1.Columns.Count;
slcount:=slcount-1;
i:=i+1;
ListView1.Items.Add;
ListView1.Items.Item[i-1].Caption:=sl.Strings[i-1];
if i1 > 1 Then
Begin
ListView1.Items.Item[i-1].SubItems.Add(sl1.Strings[i-1]);
end;
if i1 > 2 Then
Begin
ListView1.Items.Item[i-1].SubItems.Add(sl2.Strings[i-1]);
end;
if i1 > 3 Then
Begin
ListView1.Items.Item[i-1].SubItems.Add(sl3.Strings[i-1]);
end;
if i1 > 4 Then
Begin
ListView1.Items.Item[i-1].SubItems.Add(sl4.Strings[i-1]);
end;
if i1 > 5 Then
Begin
ListView1.Items.Item[i-1].SubItems.Add(sl5.Strings[i-1]);
end;
until slcount=0;
end;
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Re: Listview LoadFromFile ?
neden böyle bir sınırlamaya ihtiyaç duydun anlamadım doğrusu
UWESIS CORPORATION