• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Builder c++ - odczyt danych z pliku i wypisanie ich

Cloud VPS
0 głosów
887 wizyt
pytanie zadane 27 stycznia 2017 w C i C++ przez MrFraxis Początkujący (390 p.)

Witam,

Ponownie mam problem :/ Zrobiłem w zasadzie większość programu ale teraz mam problem z wczytaniem danych z pliku i wyświetlaniem ich. Dane to jakieś pomiary, przykładowe dwie linijki:

:2015:06:01:00:00:t1:30.88:t2:48.38:t3:85.00:t4:85.00:p:17:em:480:e1:6:e2:0:e3:481:e4:475::
:2015:06:01:00:10:t1:29.25:t2:48.00:t3:85.00:t4:85.00:p:17:em:480:e1:4:e2:0:e3:478:e4:471::

Program ma odczytać datę czyli od 2015-06-01 do 2015-06-30, następnie pomiar t1 i t2 , wrzucić je do tablicy i wyświetlić w postaci na przykład: 2015-06-01 - pomiar t1: 30.88; pomiar t2: 48.38.

Przede wszystkim problem mam w odczytaniu chociaż jednej linijki :/ Zrobiłem otwieranie pliku i wczytywanie danych wzorując się na filmie Pana Mirka i wrzucanie ich do komponentu " memo " ale jedyne co wczytuje to same -1 a nie nawet to co zacytowałem powyżej. Patrząc na mój kod raczej będę musiał napisać od zera otwieranie i wczytywanie pliku ale nie mam pojęcia już jak inaczej to zrobić

 

dataa = data.c_str();


        fstream plik;
        plik.open(dataa, ios::in);

        if ( plik.good() == false )
                {
                        ShowMessage("Plik nie istnieje!");

                }else{
                        otwarcie = true;
                }

         if ( otwarcie == true )
         {

                while(!plik.eof())
                {
                        string linia;
                        Memo1->Lines->Add(getline(plik, linia);
                        plik.close();
                }


 

1 odpowiedź

0 głosów
odpowiedź 27 stycznia 2017 przez niezalogowany
while(!plik.eof())
{
        string linia;
        Memo1->Lines->Add(getline(plik, linia);
        plik.close(); //niechciany błąd
}

Jeżeli otwarcie pliku się powiodło to:
1. Odczytujesz wiersz i dodajesz go do komponentu.
2. Zamykasz plik. (mimo, że mógł się nie skończyć)
3. Próbujesz odczytać wiersz i dodać go do komponentu, ale nie odczytasz go, bo plik jest zamknięty.

komentarz 27 stycznia 2017 przez MrFraxis Początkujący (390 p.)
plik.close(); "ratował" program bo w pliku mam masę linijek takich danych i jak próbowałem wczytać plik to aplikacja zacinała się bo musiała to wszystko wczytać

 

Do tego jeszcze przypomniałem sobie o jednym. W jaki sposób przechować tak dużą ilość danych? One muszą być wrzucone do jakiejś tablicy albo czegoś innego ( pomijając wyświetlanie ich w komponencie memo )

 

No i generalnie teraz w ogóle odczytywanie przestało działać...
komentarz 27 stycznia 2017 przez niezalogowany
Linie jak podane w przekładzie przechowywałbym wyłącznie w stringu, dzielił go i w ten sposób odczytywał kolejne informacje. Odczyt na pewno działa, problem może występować w dodawaniu linii do komponentu, porób testy.

Podobne pytania

0 głosów
1 odpowiedź 440 wizyt
–1 głos
0 odpowiedzi 278 wizyt
+1 głos
1 odpowiedź 1,642 wizyt
pytanie zadane 16 października 2016 w C i C++ przez MrFraxis Początkujący (390 p.)

93,488 zapytań

142,422 odpowiedzi

322,773 komentarzy

62,908 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...