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

961

    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. Vuonna 2026 jää entistä vähemmän rahaa käteen palkansaajille

      Työttömyysvakuutusmaksu nousee 0,3 prosenttia. Työeläkemaksu nousee 7,15 prosentista 7,3 prosenttiin. Työmarkkinajärjest
      Maailman menoa
      121
      7286
    2. Suomen kansa puhunut: Purra huonoimpia ministereitä

      Kouluarvosanalla 6–, eli samaa tasoa mitä Purran oikeakin koulutodistus. Epäpätevyys on tullut huomattua Suomen talouden
      Maailman menoa
      504
      5439
    3. Mitä aiot tehdä uudenvuoden aattona

      Mitä olet suunnitellut tekeväsi uudenvuoden aattona ja aiotko ensi vuonna tehdä jotain muutoksia tai uudenvuoden lupauks
      Sinkut
      151
      3355
    4. Joulun ruokajonoissa entistä enemmän avuntarvitsijoita - Mitä ajatuksia tämä herättää?

      Räppärit Mikael Gabriel, VilleGalle ja Jare Brand jakoivat ruokaa ja pehmeitäkin paketteja vähävaraisille jouluaattoa ed
      Maailman menoa
      216
      2651
    5. Marin sitä, Marin tätä, yhyy yhyy, persut jaksaa vollottaa

      On nuo persut kyllä surkeaa porukkaa. Edelleen itkevät jonkun Marinin perään, vaikka itse ovat tuhonneet Suomen kansan t
      Maailman menoa
      50
      2358
    6. Varsinainen vetonaula tämä Pyhäjärven keskustelupalsta

      Lisää kummasti muuttohaluja, kun lukee tätä foorumia. Tosin väärään suuntaan. Marraskuuhun mennessä tämä vähäinenkin vä
      Pyhäjärvi
      68
      1298
    7. Pituuden mittaaminen

      Ihmisen pituuden mittaaminen ja puolikkaat senttimetrit. Kuuluuko ne puolikkaatkin sentit tai millit teistä ilmoittaa m
      Sinkut
      43
      1292
    8. En tiedä enää

      Pitäiskö mun koittaa vältellä sua vai mitä? Oon välillä ollut hieman mustasukkainen, myönnän. En ymmärrä miksi en saa su
      Ikävä
      77
      1262
    9. Muistattekos kuinka persujen Salainen Akentti kävi Putinin leirillä

      Hakemassa jamesbondimaista vakoiluoppia paikan päällä Venäjällä? Siitä ei edes Suomea suojeleva viranomainen saanut puhu
      Maailman menoa
      11
      1179
    10. Mitäköhän vuosi

      2026 tuo tullessaan?
      Ikävä
      111
      1153
    Aihe