Jak wypisac dane z TListView do pliku

0

<ort>otóż</ort> mam liste TListView a w niej 2 kolumny

imie nazwisko
Jan Kowalski
Maria Nowak
Staś Piaś

i teraz z tej listy zeby zapisać dane do pliku w nastepujacy spób

ofstream wyniki("wyniki.txt");
for(int i=0;i<lista->Items->Count;i++)

  • nie wiem czy dobry to warunek ale raczej tak, tyle razy sie obróci ile jest *rekordów
    {
    // co tu powinno być

}

ewentualnie uzywajac SaveDialog
/*
SaveDialog1->Filter="Wszystkie pliki . |.|Pliki tekstowe .txt|.txt|";
if(SaveDialog1->Execute())
{
for(int i=0;i<lista->Items->Count;i++)
{

}
}
*/

0

dzięki za link, ale to zabardzo zakręcone, jak chce tylko wiedzieć jak odwołuje się do poszczególnych wierszy listy.

napisałem ze chce wypisać do pliku tyle wierszy ile razy obróci się pętla, więc problem leży tylko w tym jak pobierać dane z listy.

wstawiać to :
class rekord
{
}
TListView *pp;
rekord rob;...
lista->Items->BeginUpdate();
rob.gospodarz="xo";
rob.gosc="...::: I :::...";
pp=lista->Items->Add();
pp->Caption=rob.gospodarz;
pp->SubItems->Add(rob.gosc);
lista->Items->EndUpdate();

chodzi o proces odwrotny :)

0
TListItem *list;
list = ListView1->Items->Item[0];
AnsiString Caption    = list->Caption;
AnsiString SubCaption = list->SubItems->Text;

I to w pętli...

{ADD}
Jednak chyba coś źle napisałem... Ewentualnie:

AnsiString SubCaption = list->SubItems->Strings[0];
0

TListItem *list;
AnsiString caption;
AnsiString subcaption;

SaveDialog1->Filter="Wszystkie pliki . |.|Pliki tekstowe .txt|.txt|";

if(SaveDialog1->Execute())
{
for(int i=0;i<lista->Items->Count;i++)
{
list=lista->Items->Item[i];
caption=list->Caption;
subcaption=list->SubItems->Text;
}

to by tak było, bo kompilator nie protestuje ale wraz nie wiem jak za pomoca saveDialog zapisac to do pliku, bo ta pierwsza metoda to trzeba napisać przeciązenie operatora <<

0

Wykorzystaj TStringList - zapis szybki(no, powiedzmy, jak na VCL), latwy i przyjemny;)

0

mógłbyś przynajmniej napisać jak to zrobić, bo ja naprawde nie mam pomysłu.

0

W sumie to ne wiem do czego ci to potrzebne, ale np, zeby ladnie wygladalo, moze byc tak:

TListItem *list;
AnsiString caption;
AnsiString subcaption;
SaveDialog1->Filter="Wszystkie pliki *.* |*.*|Pliki tekstowe *.txt|*.txt|";

if(SaveDialog1->Execute())
{
TStringList *plik = new TStrinList;
for(int i=0;i<lista->Items->Count;i++)
{
list=lista->Items->Item[i];
caption=list->Caption;
subcaption=list->SubItems->Text;
plik->Add(caption);
plik->Add("   " + subcaption);
plik->Add("");
}

plik->SaveToFile(SaveDialog1->FileName);
delete plik;
}
 

Pisałem na oko i bez kompilatora...

0

Pisałem na oko i bez kompilatora...

Dzięki !!! działa tak jak tego chciałem, zrobiłem tylko mały zabieg kosmetyczny. Jest OK!

thx

1 użytkowników online, w tym zalogowanych: 0, gości: 1