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

864

    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. Tällä kertaa Marinia kadehtii Minäminä Päivärinta

      Kokoomuksen tyhjäntoimittelija itkeä tuhertaa, kun kansainvälinen superstaramme ei leiki hänen kanssaan. Oikean puoluee
      Maailman menoa
      406
      1623
    2. Minua itkettää tämä tilanne

      Meidän pitäisi jutella. Eikö niin? Miehelle.
      Ikävä
      105
      1308
    3. Miksi koulut pakottavat

      Lapset uimaan sekaryhmänä? Murrosikäiset tunnetusti häpeilevät vartalossa tapahtuvia muutoksia. Tulee turhia poissaoloja
      Maailman menoa
      117
      1245
    4. Miksi jollain jää "talvi päälle"

      Huvittaa kastoa ullkona jotain vahempaa äijää joka pukeutuu edelleen kun olisi +5 astetta lämmittä vaikka on helle keli
      Maailman menoa
      173
      1220
    5. Mitkä oli suurimmat

      Syyt mihin hänessä ihastuit alussa ja pikkuhiljaa tunteiden edetessä
      Ikävä
      44
      1007
    6. Minulla oli tunteita

      Tein itsestäni pellen. Sait hyvät naurut ja minä 💔
      Ikävä
      63
      916
    7. Susanne Päivärinta kirjassaan: Sannalla nousi valta päähän, Big Time!

      Päivärinta toteaa ettei ole nähnyt kenenkään muuttuvan niin totaalisesti kuin Marinin, eikä siis todellakaan parempaan s
      Maailman menoa
      91
      844
    8. Se katse silloin

      Oli hetki, jolloin katseemme kohtasivat. Oli talvi vielä. Kerta toisensa jälkeen palaan tuohon jaettuun katseeseen. Tunt
      Ikävä
      32
      836
    9. Suomen Pallolitto: Tasoryhmät lasten jalkapallossa - Erätauko-tilaisuus ma 20.5.2024

      Tasoryhmät lasten ja nuorten jalkapallossa herättävät paljon keskustelua. Mitä tasoryhmät ovat ja mikä on niiden tarkoit
      Suomi24 Blogi ★
      0
      830
    10. Tuhdit oluet kauppoihin. Miksi vastustaa?

      8% oluet kauppoihin mutta mikä siinä on että osa politikoista vstustaa ? Kauppa kuitenkin hinnoittelee vahvan oluen ni
      Maailman menoa
      189
      759
    Aihe