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

[WinApi] Wczytywanie danych z .ini

Ostatnio zmodyfikowano 2011-04-15 22:14
Autor Wiadomość
adsko
Temat założony przez niniejszego użytkownika
[WinApi] Wczytywanie danych z .ini
» 2011-04-15 00:35:52
Witam, mam mały problem. Tym problemem jest wczytanie danych z .ini. Podczas naciśnięcia buttonu kompilator daje błąd i nie wiem o co chodzi;/
Oto fragment kodu:
C/C++
if( wPar == 1 )
{
    if( b < 16 )
    {
        kolin[ b ] =( PSTR ) VirtualAlloc(( LPVOID ) NULL,( DWORD )( 20 ), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE );
        int a = GetWindowText( kolim, kolin[ b ], 225 );
        if( a == 0 ) MessageBox( HWND_DESKTOP, "Nic nie wpisałeś, wpisz jeszcze raz!", "Błąd", MB_OK );
        else
        {
            SetWindowText( lok[ b ], kolin[ b ] );
            b++;
           
        }
    }
}
if( wPar == 2 )
{
   
   
   
    sciezkaa =( PSTR ) VirtualAlloc(( LPVOID ) NULL,( DWORD )( 20 ), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE );
    int l = GetWindowText( yhyy, sciezkaa, 225 );
    if( l == 0 ) MessageBox( hwpotomek, "Nie wpisałeś ścieżki do zapisu!", "Błąd", MB_OK );
    else
    {
       
        string sc;
        sciezka = sciezkaa;
        sciezka = sciezka + "Adsko®";
        CreateDirectory( sciezka.c_str(), 0 );
        sciezka = sciezka + "\\sds.ini";
    }
    for( int i = 0; i < 16; i++ )
    {
        WritePrivateProfileString( "TEAM", o[ i ], kolin[ i ], sciezka.c_str() );
       
    }
}
if( wPar == 3 )
{
    sciezkaa =( PSTR ) VirtualAlloc(( LPVOID ) NULL,( DWORD )( 20 ), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE );
    int l = GetWindowText( yhyy, sciezkaa, 225 );
    if( l == 0 ) MessageBox( hwpotomek, "Nie wpisałeś ścieżki do odczytu!", "Błąd", MB_OK );
   
    else
    {
       
        string sc;
        sciezka = sciezkaa;
        sciezka = sciezka + "Adsko®\\sds.ini";
       
        for( int i = 0; i < 16; i++ )
        {
            GetPrivateProfileString( "TEAM", o[ i ], "", kolin[ i ], sizeof( kolin[ i ] ), sciezka.c_str() );
            SetWindowText( lok[ i ], kolin[ i ] );
        }
    }
}
zmienne:
LPCSTR o[20]={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"}; <- dzięki niej nadaję dla sekcji klucz
LPSTR kolin[20]; <- przechowuje w niej wczytane dane
LPSTR sciezkaa <- łatwo się domyślić że dzięki niej uzyskuje ścieżkę do wczytania/zapisu pliku ini
HWND lok[20] <- Uchwyt do kontrolek tak samo jak zmienna yhyy
P-30776
McAffey
» 2011-04-15 08:44:14
Pokaż jakie błędy wyrzuca (wstawiaj je w tagi log /log).
P-30779
DejaVu
» 2011-04-15 12:08:43
On chyba nie mówi o błędach kompilacji tylko wystąpieniu błędu podczas działania aplikacji. Zapewne gdzieś masz NULL zamiast wskaźnika na dane i dlatego program się sypie. Druga opcja to wyjście poza zakres tablicy (np. wynikającej z zarezerwowania zbyt małej ilości pamięci na tablicę).
P-30781
adsko
Temat założony przez niniejszego użytkownika
» 2011-04-15 12:56:24
To gdzie ja tam mogę wyjść poza tablicę? Nawet jak ustwawiam wszystko na 0 bez pętli to mi błąd się nie zmienia:/
Czy to poprostu coś ze zmienną w której przechowuje te dane? Ponieważ na pierwszym obiegu pętli wywala mi error i to chyba właśnie z pamięcią. Jak chcecie mogę udostępnić cały kod ale jest on niezbyt czytelny według mnie:D A co do tablic to tablice większe niż potrzebuję więc ja już nie wiem:/
P-30783
DejaVu
» 2011-04-15 14:07:19
Czyli co?
C/C++
WritePrivateProfileString( "TEAM", o[ i ], kolin[ i ], sciezka.c_str() );
Na tym się wywala?
P-30786
adsko
Temat założony przez niniejszego użytkownika
» 2011-04-15 14:20:09
Tak na tym, zaraz pokażę zdjęcie:
http://img27.imageshack.us/i/beztytuudks.png/

Ok znalazłem:D po prostu nie dałem:
C/C++
kolin[ i ] =( PSTR ) VirtualAlloc(( LPVOID ) NULL,( DWORD )( 20 ), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE );
  i tu mam kolejne pytanie, może ktoś wytłumaczyć o co chodzi w tym?:D
P-30787
DejaVu
» 2011-04-15 14:38:06
Jeżeli nie wiesz co robi ten kod to znaczy, że go skądś skopiowałeś (co już po pierwszym poście dało się zauważyć). Generalnie poszukaj opisu tej funkcji na MSDNie, a prawda zostanie Ci objawiona :)
P-30790
adsko
Temat założony przez niniejszego użytkownika
» 2011-04-15 14:40:44
Miałem inny problem, i jakoś znalazłem ten kod, a z samej budowy domyślam się że on rezerwuje pamięć:D
P-30791
« 1 » 2
  Strona 1 z 2 Następna strona