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

966

    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. Perussuomalaiset kirjoittaa vain positiivisista uutisista

      Ei tarvitse palstaa paljon seurata, kun sen huomaa. Joka ainoa positiivinen uutinen Suomen taloudesta tai ylipäätään, ni
      Maailman menoa
      117
      7010
    2. Kuka on UMK-suosikkisi? UMK26 paljastuksia lauantai 28.2.

      UMK26 tänä lauantaina! UMK26 tulee suorana Tampereelta ja nyt selviää, kuka pääsee edustamaan Suomea Euroviisuihin. M
      Euroviisut
      108
      4767
    3. L/over ja Jani Volanen! Minkä arvosanan 4-10 annat roolityöstä?

      Psykologinen trilleri L/over - ikuisesti minun on koukuttanut tv-katsojat ruudun ääreen. Kun Roosa (Krista Kosonen) tapa
      Tv-sarjat
      59
      4036
    4. TTK:n jättänyt Vappu Pimiä rehellisenä MasterChef-kuvauksista: "Höh..."

      Vappu Pimiä on uusi MasterChef Suomi -tuomari. Viime vuonna Tanssii Tähtien Kanssa jäi taakse, ja nyt vuorossa on uusi a
      Suomalaiset julkkikset
      13
      3374
    5. Natomaa hyökkäsi Iraniin

      Näemme nyt tällä hetkellä Natomaan nimeltä Yhdysvallat, joka toimii aika pitkälti perinteisen kansainvälisen lain ulkopu
      NATO
      704
      2117
    6. Trump aloitti III maailmansodan tänään.

      Narsisti ja mielipuoli Trump pitäisi saada pois, miten se onnistuisi parhaiten?
      Maailman menoa
      240
      1479
    7. Miksi et nainen halua

      minua, kuten minä sinua?
      Ikävä
      66
      1368
    8. Rakas tiedät, että toivoisin

      Kuulevani sinusta. Tiedät, että viestisi tekisi minut ihan onnelliseksi. Että äänesi kuuleminen saisi minut leijumaan ja
      Ikävä
      58
      1348
    9. Osaako kukaan sanoa?

      Mikä on syy siihen, että apulaisidiootti yrittää kaikin keinoin haitata kaikkea yrittämistä Ähtärissä? Nyttkin pilkkaa j
      Ähtäri
      53
      1306
    10. Viesti miehelle

      Nyt vastaa oikea taa´app. Ainoastaan puhelimitse voidaan selvittää asioita, mutta tuskin sitä haluat kaiken halveeramise
      Ikävä
      12
      982
    Aihe