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

988

    Vastaukset 6

    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. Mikä kaivatussasi ärsyttää

      Juuri nyt, tällä hetkellä?
      Ikävä
      103
      1241
    2. Salaisuudet paljastuu

      Viimeiset hetket meneillään ottaa yhteyttä. Kertoa totuus ja selvittää asioita. Viimeiset hetket meneillään jos joku
      Ikävä
      93
      862
    3. Poliisi pamputti Variskankaalla

      Mistä lie alkanut ja miksi poliisit kutsuttu, mutta mielestäni hyvin toimittu. Jos haluaa rähistä eikä rauhoitu puheella
      Kajaani
      31
      784
    4. vapaa

      sana :) 🚮
      Ikävä
      66
      693
    5. Karita Tykkä mennyt kihloihin.

      Onnittelu kuuluu hänelle ja tulevalle aviopuolisolleen.
      Kotimaiset julkkisjuorut
      93
      616
    6. 32
      605
    7. S-ryhmän ihmisoikeuslinja ei kestä omaa hankintaketjuaan

      S-ryhmän Israel-boikotin suurin uskottavuusongelma löytyy yllättävän läheltä, SOK:n omien tuotemerkkien hankintaketjuist
      Maailman menoa
      16
      574
    8. Nainen tosi ikävä sua

      Näkispä edes ohimennen
      Ikävä
      18
      558
    9. Haavoittuvuutesi on aseista riisuvaa

      Harmi, etten voi osoittaa sinulle tunteita. Hyvää yötä miehelle. Naiselta
      Ikävä
      43
      523
    10. Rakennus myynnissä

      Joko se loppuu mehtä hallitus sumilta?
      Suomussalmi
      10
      466
    Aihe