Forum MOJA PASJA - PROGRAMOWANIE Strona Główna
http://www.programuj.com
  WikiWiki  FAQFAQ    SzukajSzukaj    UżytkownicyUżytkownicy    GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 




ListBox i odczyt z pliku.

Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum MOJA PASJA - PROGRAMOWANIE Strona Główna -> Borland C++ Builder
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Jak zrobić aby listbox wstawiony w formularzu pobierał pozycje z pliku??

Przykład

Plik

Ania
Beata
Kasia
...

Formularz

Wczytane pozycje w Listboxie

Ania
Beata
Kasia
...

Z góry dzięki za pomoc...
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
zelu



Dołączył: 06 Maj 2006
Posty: 9

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Ja bym to zrobił tak:

Wczytał plik do tablicy, i każdą linijkę ListBoxa nadpisał za pomocą pętli for.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Tak tylko tam będzie przeszło tysiąc pozycji.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
zelu



Dołączył: 06 Maj 2006
Posty: 9

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
To chyba nie problem, tablica 1 wymiarowa jest mało-pamięcio-żerna, a for szybciutko wpisze te pozycje.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Tyle, że ja jestem zielony, dlatego szukam pomocy na tym forum.

Czyli nikt nie pomoże żółtodziobowi??
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
DieM
1 kilometr = 1024 metry


Dołączył: 15 Lip 2007
Posty: 52
Skąd: Poland

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Ale po co bawić się w tablice? Jeżeli jest to plik tekstowy, a z pierwszego postu domyślam się że taki właśnie jest to wystarczy takie coś:

Aby zapisać plik:
c++:

ListBox1->Items->SaveToFile("plik.txt");


Aby wczytać plik:
c++:

ListBox1->Items->LoadFromFile("plik.txt");


Tylko że w tym przypadku każda pozycja do listbox musi być w oddzielnej linii w pliku
czyli tak jak napisał ekiertomierz, jeśli w pliku dane wyglądają tak:
Cytat:

Ania
Beata
Kasia

czyli każde imię jest w oddzielnej linii w listbox będzie tak samo
_________________
Moje www: http://www.diem.cba.pl
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
zelu



Dołączył: 06 Maj 2006
Posty: 9

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Faktycznie, sposób DieMa jest najprostszy, nie zauważyłem, że ListBox ma funkcję odczytywania z pliku.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Dzięki

Jak filtrować te wpisy za pomocą pola EDIT??

Chodzi mi o to, że po wpisaniu znaku np P przechodzi do pola zaczynającego się na P, po wpisaniu np Pa do pola zaczynającego się od Pa itd.???
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
Darek_c++
programista


Dołączył: 26 Paź 2006
Posty: 716
Skąd: Poznań

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Taką funkcję musisz napisać samemu i wywoływać np. w zdarzeniu OnChange komponentu TEdit. Funkcja może być oparta na liscie lini danych typu TStringList i wczytywać do TListBox tylko linie zaczynające się na litery aktualnie wpisane w TEdit;
_________________
Optymalizacja stron internetowych informacje prasowe
randki internetowe


Ostatnio zmieniony przez Darek_c++ dnia Wto Gru 18, 2007 1:15 pm, w całości zmieniany 1 raz
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
DieM
1 kilometr = 1024 metry


Dołączył: 15 Lip 2007
Posty: 52
Skąd: Poland

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Tak się składa że kiedyś napisałem taki filtr, więc mogę zamieścić ten kod tutaj, może się przyda:
c++:

//Opis:
//-należy wstawić do formularza dwa obiekty: 'Edit' i 'ListBox'
//-z obiektu 'Edit' należy wywołać funkcję "OnChange" i wpisać poniższą funkcję
//obiekt 'ListBox' został nazwany: "lista"
//obiekt 'Edit' został nazwany: "szukaj"
//Do prawidłowego działania funkcji niezbędny jest plik nagłówkowy: "include <string.h>"


//funkcja
char przechowalnia_list[128]="";
char przechowalnia_szukaj[128]="";
char przechowalnia[128]="";
for (int i=0; i<lista->Items->Count; ++i) {
Application->ProcessMessages();
strcpy(przechowalnia_list, lista->Items->Strings[i].c_str());
strcpy(przechowalnia_szukaj, szukaj->Text.c_str());
strcpy(przechowalnia, "");
        for (int j=0; j<szukaj->Text.Length(); ++j) {
          przechowalnia[j]=przechowalnia_list[j];
        }
if (stricmp(przechowalnia_szukaj, przechowalnia)==0) {
  lista->ItemIndex=i;
  listaClick(this); //tą linię można usunąć, jeśli nie trzeba wywoływać zdarzenia kliknięcia w listę
  return;
  }
}

PS wiem że można to napisać lepiej żeby działało szybciej, ta funkcja nie jest najwyższych lotów Smile ale napisałem to do jednego z moich pierwszych programów na początku nauki c++, a teraz nie mam czasu by to poprawić,
sam możesz napisać swoją funkcję wzorując sie na tym
Pozdrawiam
_________________
Moje www: http://www.diem.cba.pl
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Dzięki.

Zastanawiam się jeszcze, czy jak zrobić coś takiego, że jak kliknę w jakąś pozycję na liście otworzy mi odpowiednio przypisany adres www w koponencie CPPWEBBROWSER
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
DieM
1 kilometr = 1024 metry


Dołączył: 15 Lip 2007
Posty: 52
Skąd: Poland

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
żeby otworzyć stronę w cppweb. użyj kodu:
c++:

CppWebBrowser_V11->Navigate(WideString("http://www.jakasstrona.pl/"), 0, NULL, NULL, NULL);

a żeby zrobić jak chcesz, wykorzystaj zdarzenie onClick listboxa, to już nie powinno być trudne wystarczy pomysł, możesz przechowywać adresy stron jako wiersze w listboxie albo jak tam sobie wymyślisz

PS przez rok chyba można było rozwiązać tak "prosty problem" Wink
_________________
Moje www: http://www.diem.cba.pl
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Dzięki... Jak zrobić odwołanie do pliku html na dysku twardym?
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
DieM
1 kilometr = 1024 metry


Dołączył: 15 Lip 2007
Posty: 52
Skąd: Poland

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
c++:

AnsiString adres="file:///D:\\katalog\\program\\strona.html";
CppWebBrowser_V11->Navigate(WideString(adres.c_str()), 0, NULL, NULL, NULL);


PS pisane z pamięci
_________________
Moje www: http://www.diem.cba.pl
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
ekiertomierz
1 kilometr = 1024 metry


Dołączył: 29 Maj 2007
Posty: 54
Skąd: Świętochłowice

Post Zacytuj zaznaczone Odpowiedz z cytatem OCEŃ POST
Tyle, że mnie wczytuje poszczególny adres z pliku DAT.

Mam zrobione to tak:

Mam dwie listy typu ListBox.

Do obydwu ładuję pozycje.

W pierwszej liście mam nazwy poszczególnych podstron.

Plik 1
Plik 2

W drugiej zaś adresy do pliku zaapisane w takiej postacji:

DANE/plik1.html
DANE/plik2.html

Za pomocą poniższego kodu:

c++:
lista->ItemIndex;
WebBrowser->Navigate(WideString(lista2->Items->Strings[lista->ItemIndex]).c_bstr(), 0, NULL, NULL, NULL);


W ten sposób z listy 2 odczytuję ten sam numer pozycji co w liście 1 np:

Pozycja 1 z listy 1 - Plik 1 = Pozycja 1 z listy 2 - DANE/plik1.html

i uruchamiam adres do bliku html. Jednak nie mogę dać bezpośredniej ścieżki, bo w późniejszym czasie gdy program będzie ukończony użtkownik insalujący program może wybrać inny katalog niż w ścieżce:

Cytat:
D:\\katalog\\program\\strona.html


Wtedy nie załaduje strony do programu.

Jak rozgryźć ten problem?
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Skype
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum MOJA PASJA - PROGRAMOWANIE Strona Główna -> Borland C++ Builder Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


hosting sponsorowany przez hosted.pl
Powered by phpBB © 2001, 2002 phpBB Group