Chudy22 Opublikowano 3 Lutego 2007 Opublikowano 3 Lutego 2007 Witam ponownie :) Mam problem posluguje sie przykladem Zawieja (tylko do celow edukacyjnych zeby nie bylo :D ) i jak raz zapisze notatke to sie ona pokazuje, ale chcialbym zrobic tak zeby po napisaniu nowej notki poprzednia sie nie kasowala a zapisala pod stara..... Ma ktos jakies pomysly?? :D Ponizej dla przypomnienia kod Zawieja ® ;) #include <iostream> #include <fstream> #include <string> /* Program: Pamietnik Autor: Zawiej */ using namespace std; int main() { struct dane { char data[35], notatka[35], podpis[10]; } w; int wybor; string linia, zawartosc; poczatek: cout<<" ########################\n"; cout<<" # Pamietnik #\n"; cout<<" ########################\n\n"; cout<<" 1. Dodaj notatke\n"; cout<<" 2. Wczytaj notatke\n"; cout<<" 3. Exit\n"; cin>>wybor; cin.ignore(); switch (wybor) { case 1: goto dodaj; break; case 2: goto wczytaj; break; case 3: goto koniec; break; default: cout<<" Wybrales numer z poza zakresu dostepnych"; getchar(); goto poczatek; } dodaj: { system("cls"); ofstream plik; plik.open("pamietnik.txt"); cout<<" Podaj date: \n"; cin>>w.data; cin.ignore(); plik<<"######################\n"; plik<<"# Data: "<<w.data<<"\n"; cout<<" Podaj twoja notatke: \n"; cin>>w.notatka; cin.ignore(); plik<<"# Notatka: "<<w.notatka<<"\n"; cout<<" Podpis: \n"; cin>>w.notatka; cin.ignore(); plik<<"# Podpis: "<<w.podpis<<"\n"; plik.close(); getchar(); system("cls"); goto poczatek; } wczytaj: { ifstream plik; plik.open("pamietnik.txt"); if (!plik.is_open()) throw-1; while (getline(plik, linia)) { zawartosc+=linia + "\n"; } cout<<zawartosc; plik.close(); getchar(); system("cls"); goto poczatek; } koniec: system("PAUSE"); return 0; } P.S Zawiej to uzytkownik innego forum :D
Tymon Opublikowano 3 Lutego 2007 Opublikowano 3 Lutego 2007 Wczytaj starą, dodaj do niej nową i zapisz. Proste :P
Chudy22 Opublikowano 3 Lutego 2007 Autor Opublikowano 3 Lutego 2007 Heh to nie takie proste zwlaszcza ze bede musial dodawac tu okolo 300 wpisow ;)
Tymon Opublikowano 3 Lutego 2007 Opublikowano 3 Lutego 2007 Eh, ale to przecież będzie w jednym pliku, nie? :) Więc to będzie się sprowodzało do tego co napisałem.
Chudy22 Opublikowano 3 Lutego 2007 Autor Opublikowano 3 Lutego 2007 Tyle ze to kompletnie nie zadziala bo jesli tak, to musialbym zrobic zeby zapisalo sie to pod STARĄ notatką a nie nadpisywalo..... Abysmy sie lepiej zrozumiali moze zaprezenutj to w kodzie :)
Tymon Opublikowano 3 Lutego 2007 Opublikowano 3 Lutego 2007 Heh, nie chce mi się kodu teraz pisać :P Ale w punktach: 1. Wczytaj całą zawartość pliku do zmiennej. 2. Dopisz do zmiennej nową notkę. 3. Zapisz wszystko do pliku. Jednak i tak to rozwiązanie uważam za niewydajne.
Chudy22 Opublikowano 3 Lutego 2007 Autor Opublikowano 3 Lutego 2007 Niewiem dzieki za checi ale nie wychodzi moze nie mam juz dzisiaj do tego głowy ;)
Tymon Opublikowano 3 Lutego 2007 Opublikowano 3 Lutego 2007 O ludzie, o ludzie. #include <iostream> #include <fstream> #include <string> /* Program: Pamietnik Autor: Zawiej */ using namespace std; int main() { struct dane { char data[35], notatka[35], podpis[10]; } w; int wybor; string linia, zawartosc; poczatek: cout<<" ########################\n"; cout<<" # Pamietnik #\n"; cout<<" ########################\n\n"; cout<<" 1. Dodaj notatke\n"; cout<<" 2. Wczytaj notatke\n"; cout<<" 3. Exit\n"; cin>>wybor; cin.ignore(); switch (wybor) { case 1: goto dodaj; break; case 2: goto wczytaj; break; case 3: goto koniec; break; default: cout<<" Wybrales numer z poza zakresu dostepnych"; getchar(); goto poczatek; } dodaj: { ifstream plik; plik.open("pamietnik.txt"); zawartosc = ""; if (!plik.is_open()) throw-1; while (getline(plik, linia)) { zawartosc+=linia + "\n"; } plik.close(); system("cls"); ofstream plikOpen; plikOpen.open("pamietnik.txt"); plikOpen<<zawartosc; cout<<" Podaj date: \n"; cin>>w.data; cin.ignore(); plikOpen<<"######################\n"; plikOpen<<"# Data: "<<w.data<<"\n"; cout<<" Podaj twoja notatke: \n"; cin>>w.notatka; cin.ignore(); plikOpen<<"# Notatka: "<<w.notatka<<"\n"; cout<<" Podpis: \n"; cin>>w.notatka; cin.ignore(); plikOpen<<"# Podpis: "<<w.podpis<<"\n"; plik.close(); getchar(); system("cls"); goto poczatek; } wczytaj: { ifstream plik; plik.open("pamietnik.txt"); zawartosc = ""; if (!plik.is_open()) throw-1; while (getline(plik, linia)) { zawartosc+=linia + "\n"; } cout<<zawartosc; plik.close(); getchar(); system("cls"); goto poczatek; } koniec: system("PAUSE"); return 0; } Zrobiłem to tak na bezczelnego, więc nadaje się do poprawy xP
Chudy22 Opublikowano 3 Lutego 2007 Autor Opublikowano 3 Lutego 2007 eeee jakby ci to powiedzdiec.... \ \ \ \ \ \ \ \ \ DZIAŁA JESTEŚ WIELKI dzieki :D:D:D
Chudy22 Opublikowano 7 Lutego 2007 Autor Opublikowano 7 Lutego 2007 Nie chce zakladac nowego tematu a potrzebuje tych danych otóz czy jest jakiś skrypt powodujący Wylaczenie/Zresetowanie komputera?? P.S Sorki za moje pytania, mam nadzije ze wybaczycie ;)
blackmaul Opublikowano 7 Lutego 2007 Opublikowano 7 Lutego 2007 WinAPI: ExitWindowsEx (EWX_REBOOT | EWX_FORCE, 0)
Tymon Opublikowano 7 Lutego 2007 Opublikowano 7 Lutego 2007 execute_shell( 'shutdown', '/s /t 0' ); Zamyka system. execute_shell( 'shutdown', '/r /t 0' ); Restartuje. Pisałem już gdzieś o tym :) EDIT Sry, myślałem że dla GMa xD EDIT[ http://msdn2.microsoft.com/en-us/library/aa376868.aspx #include<windows.h> #include<iostream> int main() { ExitWindowsEx( akcja, 0); }
Chudy22 Opublikowano 7 Lutego 2007 Autor Opublikowano 7 Lutego 2007 Black a nie da sie bez WinApi?? :)
blackmaul Opublikowano 7 Lutego 2007 Opublikowano 7 Lutego 2007 Co za różnica, w C++ zawsze możesz gdzieś pierdyknąć kod z WinApi :)
Chudy22 Opublikowano 7 Lutego 2007 Autor Opublikowano 7 Lutego 2007 Dalem tak i nic :( int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ExitWindowsEx (EWX_REBOOT | EWX_FORCE, 0); keybd_event(VK_MENU,0x38,0,0); keybd_event(VK_RETURN,0x1c,0,0); keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0); keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);
Filar Społeczności Ranmus Opublikowano 7 Lutego 2007 Filar Społeczności Opublikowano 7 Lutego 2007 A ja jeszcze powrócę do problemu z pierwszego tematu. Otóż Tymon podał rozwiązanie, którego tak naprawdę nie powinno się stosować. Po to można otwierać pliki w trybie APPEND by właśnie dodawać zawartość bez utraty poprzedniej.
Solmis Opublikowano 12 Lutego 2007 Opublikowano 12 Lutego 2007 WinExec("tsshutdn 0 /POWERDOWN /DELAY:0", SW_HIDE); - mi to zawsze pomagało (wyłącza system), ale to jest w winapi :boxed:
Marmot Opublikowano 12 Lutego 2007 Opublikowano 12 Lutego 2007 Do wyłączenia komputera można wywołać funkcję ExitWindowsEx w user32.dll który jest w systemie :)
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się