Dateigröße ausgeben



  • Hall Leute,
    ich bin dabei bei einer Datei die Größe der Datei(z.B: in Bytes)
    auszulsen. Ich habe folgendes geschrieben:

    DWORD SizehWnd;
    
    SizehWnd = GetFileSize("C:\\Users\\Patrick\\Downloads\\txt3.txt",0);
    char sze[300];
    
    sprintf_s(sze,"%f",SizehWnd);
    MessageBox(0,TEXT(sze),TEXT("Dateigröße"),MB_OKCANCEL | MB_ICONWARNING);
    

    Doch die MessageBox sagt, dass es iwie -928989898... gr0ß ist.
    Die datei ist in echt 62 bytes groß.



  • %f schreibt einen float, kein unsigned int. Du willst %u statt %f.

    In richtigem C++ wäre das übrigens nicht passiert:

    #include <string>
    DWORD SizehWnd = GetFileSize("C:\\Users\\Patrick\\Downloads\\txt3.txt",0);
    MessageBox(0,TEXT(std::to_string(SizehWnd).c_str()),TEXT("Dateigröße"),MB_OKCANCEL | MB_ICONWARNING);
    


  • Mhh jetzt steht da irgendwie diese Zahl 492...



  • std::ifstream is("bla.foo", std::ios::binary);
    is.seekg(0, std::ios::end);
    std::cout << "size = " << is.tellg() << std::endl;
    


  • großbuchstaben schrieb:

    std::ifstream is("bla.foo", std::ios::binary);
    is.seekg(0, std::ios::end);
    std::cout << "size = " << is.tellg() << std::endl;
    

    Danke und wie kann ich das in eine MessageBox machen, denn da steht dann immer noch 0.



  • MeinNAme schrieb:

    großbuchstaben schrieb:

    std::ifstream is("bla.foo", std::ios::binary);
    is.seekg(0, std::ios::end);
    std::cout << "size = " << is.tellg() << std::endl;
    

    Danke und wie kann ich das in eine MessageBox machen, denn da steht dann immer noch 0.

    hat mit c++ nichts am hut. gib es doch einfach in der konsole aus?



  • MeinNAme schrieb:

    Danke und wie kann ich das in eine MessageBox machen, denn da steht dann immer noch 0.

    welche Plattform denn? bei mir geht das mit

    std::ifstream in("bla.foo", std::ios::binary);
      in.seekg(0, std::ios::end);
      std::ostringstream os;
      os << "xmessage \"size= " << in.tellg() << "\"";
      system(os.str().c_str());
    

Anmelden zum Antworten