Opóźnienie działania programu i zastąpienie danych w pliku

0

Witam
Zastanawiam się jak opóźnić działanie programu ewentualnie jak rozwiązać mój problem.
Otóż, przedwczoraj sobie zacząłem pisać mini-grę. Zacząłem od menu - Nowa Gra, Wczytaj Grę i wyjdź.
Chciałem zrobić tak, gdy użytkownik wybrał wczytaj grę a nie było wcześniej nowej gry, program stworzył plik z danymi i wybrał opcję nowa gra.
Jednakże, zanim program stworzy ten plik to już zaczyna robić kolejną rzecz czyli pobranie danych z niestworzonego pliku :(
Najpierw wczytuje dane a dopiero potem tworzy plik. Chciałem temu zaradzić tak, żeby go opóźnić.
Czy jest to dobry pomysł? Jak go wykonać? Jest jakiś lepszy? :)

Inne pytanie, jak zastąpić dane w pliku? Chciałem najpierw stworzyć plik, pobrać z niego dane, potem go zamknąć, znów otworzyć i zapisać jeszcze raz inne dane do niego. Jest to dobra opcja? Czy jest szybsza? Jaka? :P

0
  1. W ogóle nie rozumiem o czym piszesz. Te akcje powinny wykonywać się sekwencyjnie w jednym wątku i problemu nie ma.
  2. Zapisz dane do tymczasowego pliku a dopiero potem podmień pliki. Mniejsze ryzyko że skasujesz komu save ;]
0

Chodzi mi o to, że plik się tworzy wolniej niż są są z niego odczytywane dane.
Zapisuje np do pliku w 1-szym wersie 10, w drugim tak samo, a program pokazuje np. 61214, mimo, że wykonuje pozostałe działania dla 10.
Moje obeznanie w c++ jest dopiero na podstawowym poziomie.

0

No ale jeśli te dwie operacje są w kodzie PO SOBIE to nie ma możliwości żeby wystąpiła opisywana przez ciebie sytuacja. Chyba że nie opróżniasz bufora zapisu gdzieś albo robisz coś dziwnego/głupiego.

0

Funkcja wypelnij() tworzy plik i wypełnia go danymi.
Od razu po tym pobieram dane z tego pliku i konwersuje stringa na inta.
Tak na próbę sobie usunąłem plik tekstowy (żeby wywołać ifa) i otworzyłem folder gdzie mam program. Program wyświetlił wyniki, dopiero potem został utworzony plik tekstowy, wydaje mi się że to jest tego przyczyną. (Pewnie gadam głupoty :D)

if(plik2.good()==false)
      {
       cout<<"Musisz zaczac gre od nowa! Wiec zaczynajmy gre od poczatku "<<endl;
        wypelnij();
      } 
0

A zamykasz ten plik po zapisywaniu danych? Bo jeśli nie to bufor może "wisieć".

0

Tak. Spróbowałem go zamknąć na końcu, potem po tym if(), a na końcu w tym ifie, potem jeszcze spróbowałem go otworzyć jeszcze raz, ale nic nie dało. Mógłbym wrzucić tutaj kod, ale to jest 110 linii kodu. Nie ważne, postaram się sam na to wpaść :)

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