Visual C++ 6.0: suuren tiedoston koko

The Real J.

Nykyisessä projektissa tarvitaan tiedoston kokoa, jotta voi laskea kopioinnin tiedonsiirtonopeuden. Ongelmana on että tiedostot voivat olla hyvin suuria, jopa yli 2 gigan kokoisia, joten 32-bittinen koon selvitys (GetFileSize) ei sovi. Helpeissä mainittu GetFileSizeEx taas ei tunnu toimivan (tulee käännösvirhe). Mikä olisi paras tapa saada tuollaisen suuren tiedoston koko ?

6

957

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • juupajuujoo

      "Helpeissä mainittu GetFileSizeEx taas ei tunnu toimivan (tulee käännösvirhe)"
      kannattanee korjata se virhe. jos et osaa, pistä tänne se kyseinen koodinpätkä niin katotaan

      • The Real J.

        Funktio:

        __int64 CFileCopyTimerDlg::SizeOfFile(CString filename)
        {
           LARGE_INTEGER filedata;
           HANDLE filehandle;

           // Try to open the file for read access
           filehandle = CreateFile(filename.operator LPCTSTR(),
                             GENERIC_READ,
                             0,
                             NULL,
                             0,
                             FILE_ATTRIBUTE_NORMAL,
                             NULL);
           if (filehandle == INVALID_HANDLE_VALUE)
              return 0; // Failed, just return 0

           // Get size of file to struct
           if (GetFileSizeEx(filehandle, &filedata))
           {
              CloseHandle(filehandle);
              return (__int64)(filedata.QuadPart);
           }

           CloseHandle(filehandle);
           return 0;
        }

        Virheilmoitus:

        FileCopyTimerDlg.cpp
        C:\Data\FileCopyTimer\FileCopyTimerDlg.cpp(580) : error C2065: 'GetFileSizeEx' : undeclared identifier
        Error executing cl.exe.


      • usdhfsidufh
        The Real J. kirjoitti:

        Funktio:

        __int64 CFileCopyTimerDlg::SizeOfFile(CString filename)
        {
           LARGE_INTEGER filedata;
           HANDLE filehandle;

           // Try to open the file for read access
           filehandle = CreateFile(filename.operator LPCTSTR(),
                             GENERIC_READ,
                             0,
                             NULL,
                             0,
                             FILE_ATTRIBUTE_NORMAL,
                             NULL);
           if (filehandle == INVALID_HANDLE_VALUE)
              return 0; // Failed, just return 0

           // Get size of file to struct
           if (GetFileSizeEx(filehandle, &filedata))
           {
              CloseHandle(filehandle);
              return (__int64)(filedata.QuadPart);
           }

           CloseHandle(filehandle);
           return 0;
        }

        Virheilmoitus:

        FileCopyTimerDlg.cpp
        C:\Data\FileCopyTimer\FileCopyTimerDlg.cpp(580) : error C2065: 'GetFileSizeEx' : undeclared identifier
        Error executing cl.exe.

        ongelma on tuo vc 6.0 joka on ikivanha eikä tue tuota funktiota. ei taida auttaa muu kun hommata uudempi versio. tai mikäli pelkän platform sdk:n pystyy 6.0:aan päivittämään niin teeppä se.


      • sulla
        The Real J. kirjoitti:

        Funktio:

        __int64 CFileCopyTimerDlg::SizeOfFile(CString filename)
        {
           LARGE_INTEGER filedata;
           HANDLE filehandle;

           // Try to open the file for read access
           filehandle = CreateFile(filename.operator LPCTSTR(),
                             GENERIC_READ,
                             0,
                             NULL,
                             0,
                             FILE_ATTRIBUTE_NORMAL,
                             NULL);
           if (filehandle == INVALID_HANDLE_VALUE)
              return 0; // Failed, just return 0

           // Get size of file to struct
           if (GetFileSizeEx(filehandle, &filedata))
           {
              CloseHandle(filehandle);
              return (__int64)(filedata.QuadPart);
           }

           CloseHandle(filehandle);
           return 0;
        }

        Virheilmoitus:

        FileCopyTimerDlg.cpp
        C:\Data\FileCopyTimer\FileCopyTimerDlg.cpp(580) : error C2065: 'GetFileSizeEx' : undeclared identifier
        Error executing cl.exe.

        tiedostosi alussa rivi:

        #include


      • tämä:
        The Real J. kirjoitti:

        Funktio:

        __int64 CFileCopyTimerDlg::SizeOfFile(CString filename)
        {
           LARGE_INTEGER filedata;
           HANDLE filehandle;

           // Try to open the file for read access
           filehandle = CreateFile(filename.operator LPCTSTR(),
                             GENERIC_READ,
                             0,
                             NULL,
                             0,
                             FILE_ATTRIBUTE_NORMAL,
                             NULL);
           if (filehandle == INVALID_HANDLE_VALUE)
              return 0; // Failed, just return 0

           // Get size of file to struct
           if (GetFileSizeEx(filehandle, &filedata))
           {
              CloseHandle(filehandle);
              return (__int64)(filedata.QuadPart);
           }

           CloseHandle(filehandle);
           return 0;
        }

        Virheilmoitus:

        FileCopyTimerDlg.cpp
        C:\Data\FileCopyTimer\FileCopyTimerDlg.cpp(580) : error C2065: 'GetFileSizeEx' : undeclared identifier
        Error executing cl.exe.

        Platform SDK, hae se microsoftilta.


    • Kiikaroin

      PDC2008, MicrosoftftPDC.com osoite josta en tiedä onko apua mutta päivityksiä löytyy ehkä laajennuksiakin Microsoftilta .

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. SDP haluaa LISÄÄ veroja bensa-autoille!

      Sdp:n vaihtoehtobudjetti esittää polttomoottoriautoille lisää veroja Sdp esittää tuoreessa vaihtoehtobudjetissaan verot
      Maailman menoa
      225
      17948
    2. Riikka se jytkytti BKT:stä nyt 0,3 prosenttia pois

      Ja vain kolmessa kuukaudessa! Vuositasollahan tuo tarkoittaa reilun prosentin pudotusta. Pärjäisi varmaan lasketteluss
      Maailman menoa
      68
      10247
    3. Vasemmistoaate on aatteista jaloin

      Kaikki saavat ja kukaan ei jää ilman. Kuka tuollaista voisi vastustaa?
      Maailman menoa
      290
      6647
    4. Persut: haluamme lisää veroja!

      Lisää lisää veroja huutaa persukuoro. Veroila Suomi nousuun! "Uusi matkailuvero eli matkailijamaksu peritään esimerki
      Maailman menoa
      22
      4479
    5. Brittiläinen vasemmistolehti: Sanna Marin oli vihdoin rehellinen

      Nyt tulee pahasti lunta tupaan Seiskan tähtitytölle. Ex-pääministerin kirjaa arvostellaan latteuksista ja itsekehusta.
      Maailman menoa
      72
      3147
    6. Mihin kaikkeen sinä ihastuit hänessä

      Mikä oli se asia mikä vei jalat altasi? ❤️ Oliko jotain erityistä tilannetta vai tunne? Kenties monen sattuman summa? Ai
      Ikävä
      42
      2996
    7. "Purra löylytti oppositiota", sanoi naistoimittaja Pöllöraadissa

      Kyllä, Purra tekee juuri sitä työtä mitä hänen tuossa asemassa pitää tehdä, hän antaa oppositiolle takaisin samalla mita
      Maailman menoa
      111
      2881
    8. Alexander C. G. riisti demari-Veijolta arvonimen

      "Stubb myönsi 66 arvonimeä ja peruutti yhden arvonimen. Presidentti Tarja Halonen myönsi Baltzarille kulttuurineuvoksen
      Maailman menoa
      84
      2340
    9. MTV: Timo Jutila lataa suoraa tekstiä Pippa Laukan tylystä kritiikistä tosi-tv-kuvausten jälkeen

      Juti sai kuulla kyllä kunniansa Olet mitä syöt -ohjelmassa elintavoistaan! Toki olihan siinä aika paljon rasvaista syötä
      Painonhallinta
      20
      1507
    10. Jos samassa autossa istuu romani, somali ja venäläinen, kuka ajaa?

      Arvioiden mukaan romanit lähtivät noin 1000-luvulla liikkeelle pohjois-Intiasta. Nyt 1000 vuotta myöhemmin he ovat levit
      Maailman menoa
      14
      1335
    Aihe