Bombasarkadian Temat założony przez niniejszego użytkownika |
Zapisywanie do pliku Windows API » 2009-03-31 19:48:10 Witam, Na wstępie przepraszam, że tak często męczę, ale jakoś ciężko mi to WinAPI przychodzi. Mam taki kod jak [url href="http://wklej.org/hash/1e1d1c813f/" nazwa="TUTAJ"/]. Problem jest przy zapisywaniu do pliku. Na moją logikę wszystko powinno działać, ale plik po zapisaniu jest pusty. Otwieranie działa bezproblemowo, a zapisywanie nie.
Gdzie robię błąd? |
|
pekfos |
» 2009-03-31 20:05:16 hFile = CreateFile( sNazwaPliku, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, 0 ); zamień hFile = CreateFile( sNazwaPliku, GENERIC_WRITE, 0, NULL, CREATE_ALLWAYS, 0, 0 ); jakoś tak jak nie będzie działać to sprawdź ALLWAYS_CREATE (dawno sie w to nie bawiłem:D) do zapisu lepiej tego używać //edit: a gdzie GetWindowText()?? fajne.. plik był pusty bo bufor był pusty |
|
Bombasarkadian Temat założony przez niniejszego użytkownika |
» 2009-03-31 20:08:43 CREATE_ALWAYS to raczej zamiast CREATE_NEW. Ale plik się tworzy, tylko, że jest pusty pomimo iż hEdit ma tekst. |
|
pixelmaster |
» 2009-03-31 20:12:07 Ja robię u siebie bool ZapiszPlik( LPSTR sNazwaPliku, HWND hOknoText ) { LPSTR Bufor; DWORD dwRozmiar, dwZapisane; HANDLE hPlikz; bool udalo_sie = false; hPlikz = CreateFile( sNazwaPliku, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 ); if( hPlikz != INVALID_HANDLE_VALUE ) { dwRozmiar = GetWindowTextLength( hOknoText ); if( dwRozmiar == 0 ) { MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Niedobrze...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 ); if( Bufor == NULL ) { MessageBox( NULL, "Za mało pamięci!", "Ale wiocha...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } GetWindowText( hOknoText, Bufor, dwRozmiar + 1 ); if( !WriteFile( hPlikz, Bufor, dwRozmiar, & dwZapisane, NULL ) ) { MessageBox( NULL, "Błąd zapisu do pliku", "Dupa blada!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } GlobalFree( Bufor ); CloseHandle( hPlikz ); } return udalo_sie; }
i wybieranie miejsca zapisania OPENFILENAME ofn; char sNazwaPliku[ MAX_PATH ] = "";
ZeroMemory( & ofn, sizeof( ofn ) ); ofn.lStructSize = sizeof( ofn ); ofn.lpstrFilter = "Pliki tekstowe (*.txt)\0*.txt\0Pliki PHP (*.php;*.php3;*.phtml)\0*.php;*.php3;*.phtml\0Wszystkie pliki\0*.*\0"; ofn.nMaxFile = MAX_PATH; ofn.lpstrFile = sNazwaPliku; ofn.lpstrDefExt = "txt"; ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if( GetSaveFileName( & ofn ) ) { ZapiszPlik( sNazwaPliku, hOknoText ); }
|
|
Bombasarkadian Temat założony przez niniejszego użytkownika |
» 2009-03-31 20:26:53 Dzięki pixelmaster, twój sposób działa.
|
|
« 1 » |