Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++][winapi] odczyt z pliku

Ostatnio zmodyfikowano 2011-04-23 12:10
Autor Wiadomość
waldiw
Temat założony przez niniejszego użytkownika
[c++][winapi] odczyt z pliku
» 2011-04-23 07:06:55
Mam przykładowy plik tekstowy zawierający w kilku liniach cyfry, np:

5
2
4
3

Odczytuję ten plik :

C/C++
LPSTR Bufor;
DWORD dwRozmiar, dwPrzeczyt;
HANDLE hPlik;
hPlik = CreateFile( "lista1.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL );
if( hPlik == INVALID_HANDLE_VALUE ) MessageBox( NULL, "Nie można otworzyć pliku.", "Info", MB_ICONEXCLAMATION );

dwRozmiar = GetFileSize( hPlik, NULL );
if( dwRozmiar == 0xFFFFFFFF ) MessageBox( NULL, "Nieprawidłowy rozmiar pliku", "Info", MB_ICONEXCLAMATION );

Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 );
if( Bufor == NULL ) MessageBox( NULL, "Za mało pamięci", "Info", MB_ICONEXCLAMATION );

if( !ReadFile( hPlik, Bufor, dwRozmiar, & dwPrzeczyt, NULL ) ) MessageBox( NULL, "Błąd czytania z pliku", "Info", MB_ICONEXCLAMATION );

Bufor[ dwRozmiar ] = 0; // dodaj zero na końcu stringa
SetWindowText( hStatic, Bufor ); // zrób coś z tekstem, np. wyświetl go

GlobalFree( Bufor ); // Zwolnij bufor
CloseHandle( hPlik ); // Zamknij plik 

Czy da się odczytać ten plik linia po linii lub ewentualnie wydzielić każdą linię osobno ze zmiennej Bufor?
P-31695
marek
» 2011-04-23 09:48:46
Pewnie to będzie dla Ciebie przedszkole, ale rzuć okiem na Nowe publikacje/Obsługa plików C++ dla początkujących. Tam zrealizujesz to wykorzystując podstawowe narzędzia.
P-31697
waldiw
Temat założony przez niniejszego użytkownika
» 2011-04-23 10:10:22
W aplikacji konsolowej wiem jak to zrobić. Czytam linie w pętli:

while( !plik.eof() ) plik >> liczba;

Moje pytanie jest jak to zrobić w WinAPI?
P-31698
Elaine
» 2011-04-23 10:34:21
Tak samo, nikt nie zabrania używania standardowych strumieni w kodzie korzystającym z WinAPI.
P-31700
Dawidsoni
» 2011-04-23 12:10:07
Nie musisz się uczyć obsługi plików w WinAPI skoro możesz wykorzystać pewnie już poznaną bibliotekę fstream.
P-31708
« 1 »
  Strona 1 z 1