"type name is not allowed" przy próbie wykorzystania funkcji "FtpFindFirstFileA"

Odpowiedz Nowy wątek
2019-06-11 15:09
0

Witam. Chcę zrobić w moim projekcie wyświetlanie listy plików na serwerze ftp i chcąc wykonać funkcję FtpFindFirstFileA muszę jako trzeci argument wpisać wskaźnik do struktury i w tym momencie pojawia się problem bo czego nie wpiszę to dostaję taki błąd:

type name is not allowed

A o to wyrywek kodu:

    typedef struct lpFindFileData {
        DWORD    dwFileAttributes;
        FILETIME ftCreationTime;
        FILETIME ftLastAccessTime;
        FILETIME ftLastWriteTime;
        DWORD    nFileSizeHigh;
        DWORD    nFileSizeLow;
        DWORD    dwReserved0;
        DWORD    dwReserved1;
        CHAR     cFileName[MAX_PATH];
        CHAR     cAlternateFileName[14];
        DWORD    dwFileType;
        DWORD    dwCreatorType;
        WORD     wFinderFlags;
    }WIN32_FIND_DATAA, * PWIN32_FIND_DATAA, * LPWIN32_FIND_DATAA;

    FtpFindFirstFileA(Int, game3.c_str(), WIN32_FIND_DATAA, INTERNET_FLAG_NEED_FILE, FALSE);
edytowany 2x, ostatnio: Patryk27, 2019-06-11 15:14

Pozostało 580 znaków

2019-06-11 15:14

Musisz utworzyć zmienną o typie tej struktury i przekazać wskaźnik do tej zmiennej.


edytowany 2x, ostatnio: Patryk27, 2019-06-11 15:14

Pozostało 580 znaków

2019-06-11 16:55
0

Próbowałem zrobić coś takiego ale tak średnio ogarniam wskaźniki

typedef struct lpFindFileData {
        DWORD    dwFileAttributes;
        FILETIME ftCreationTime;
        FILETIME ftLastAccessTime;
        FILETIME ftLastWriteTime;
        DWORD    nFileSizeHigh;
        DWORD    nFileSizeLow;
        DWORD    dwReserved0;
        DWORD    dwReserved1;
        CHAR     cFileName[MAX_PATH];
        CHAR     cAlternateFileName[14];
        DWORD    dwFileType;
        DWORD    dwCreatorType;
        WORD     wFinderFlags;
    }WIN32_FIND_DATAA, * PWIN32_FIND_DATAA, * LPWIN32_FIND_DATAA;

    lpFindFileData hon, *hon2;

    hon2 = &hon;

    FtpFindFirstFileA(Int, game3.c_str(), hon2, INTERNET_FLAG_NEED_FILE, FALSE);

taki błąd otrzymywałem:

argument of type "lpFindFileData *" is incompatible with parameter of type "LPWIN32_FIND_DATAA"

edytowany 1x, ostatnio: iks de, 2019-06-11 16:56

Pozostało 580 znaków

2019-06-11 17:45
1

Czemu definiujesz strukturę która jest już zdefiniowana w odpowiednim nagłówku? Tak samo typy. Nie robi się tego.

Czytałeś to https://docs.microsoft.com/en[...]/nf-wininet-ftpfindfirstfilea chociaż?
Według dokumentacji trzecim parametrem jest po prostu:

lpFindFileData

Pointer to a WIN32_FIND_DATA structure that receives information about the found file or directory.

Czyli po prostu deklarujesz strukturę WIN32_FIND_DATA oraz przekazujesz wskaźnik do niej:

WIN32_FIND_DATA FileData;
// uzupelnij co i jak trzeba
FtpFindFirstFile(Int,game3.c_str(), &FileData, INTERNET_FLAG_NEED_FILE, NULL);

Pozostało 580 znaków

2019-06-11 18:20
0

Dzięki, już działa wszystko. Ogólnie to czytałem dokumentacje tylko na tym argumencie się zatrzymałem bo nie za bardzo rozumiałem o co w nim chodzi.

Zatem ok :) - Mr.YaHooo 2019-06-11 18:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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