Avatar billede Slettet bruger
16. december 2005 - 19:50 Der er 22 kommentarer og
2 løsninger

Se indholdet af en mappe

Hej eksperter!
Hvordan kan man med C++ få vist indholdet af en mappe?
Gerne ligesom den gør i DOS når man bruger DIR.
Avatar billede medions Nybegynder
16. december 2005 - 20:27 #1
#include <stdio.h>

#include <windows.h>

int main()
{
  WIN32_FIND_DATA data;
  HANDLE h = FindFirstFile("C:\\test\*.*",&data);
  if(h!=INVALID_HANDLE_VALUE) {
    printf("%s %d %d\n",data.cFileName,data.nFileSizeHigh,data.nFileSizeLow);
    while(FindNextFile(h,&data)) {
        printf("%s %d %d\n",data.cFileName,data.nFileSizeHigh,data.nFileSizeLow);
    }
  }
  FindClose(h);
  return 0;
}

//>Rune
Avatar billede medions Nybegynder
16. december 2005 - 20:28 #2
Hov, sådan her:

#include <stdio.h>

#include <windows.h>

int main()
{
  WIN32_FIND_DATA data;
  HANDLE h = FindFirstFile("C:\\test\\*.*",&data);
  if(h!=INVALID_HANDLE_VALUE) {
    printf("%s %d %d\n",data.cFileName,data.nFileSizeHigh,data.nFileSizeLow);
    while(FindNextFile(h,&data)) {
        printf("%s %d %d\n",data.cFileName,data.nFileSizeHigh,data.nFileSizeLow);
    }
  }
  FindClose(h);
  return 0;
}

//>Rune
Avatar billede Slettet bruger
16. december 2005 - 20:48 #3
Hmm...
Gider du skrive det i C++ - jeg er ikke så god til det der med printf, da jeg aldrig har kodet C...
Kunne jeg få dig til at bruge cout?
Avatar billede bertelbrander Novice
16. december 2005 - 20:57 #4
#include <iostream>
#include <windows.h>

int main()
{
  WIN32_FIND_DATA data;
  HANDLE h = FindFirstFile("*.cpp",&data);
  if(h!=INVALID_HANDLE_VALUE)
  {
    do
    {
      std::cout << data.cFileName << " " << data.nFileSizeHigh << " " << data.nFileSizeLow << std::endl;
    }
    while(FindNextFile(h,&data));
  }
  FindClose(h);
  return 0;
}
Avatar billede Slettet bruger
17. december 2005 - 10:37 #5
Er det ikke nemmere med:

#include <iostream>
#include <windows.h>

int main()
{
  WIN32_FIND_DATA data;
  HANDLE h = FindFirstFile("*.cpp",&data);
  while(h!=INVALID_HANDLE_VALUE && FindNextFile(h,&data)
  {
    std::cout << data.cFileName << " " << data.nFileSizeHigh << " " <<
  }
  FindClose(h);
  return 0;
}

?
Avatar billede Slettet bruger
17. december 2005 - 10:38 #6
Hov!
Jeg mener:

#include <iostream>
#include <windows.h>

int main()
{
  WIN32_FIND_DATA data;
  HANDLE h = FindFirstFile("*.cpp",&data);
  while(h!=INVALID_HANDLE_VALUE && FindNextFile(h,&data)
  {
    std::cout << data.cFileName << " " << data.nFileSizeHigh << " " << data.nFileSizeLow << std::endl;
  }
  FindClose(h);
  return 0;
}
Avatar billede Slettet bruger
17. december 2005 - 10:41 #7
Følgende besked kommer når jeg bruger

#include <iostream>
#include <windows.h>
#include "stdafx.h"

int main()
{
  WIN32_FIND_DATA data;
  HANDLE h = FindFirstFile("*.cpp",&data);
  if(h!=INVALID_HANDLE_VALUE)
  {
    do
    {
      std::cout << data.cFileName << " " << data.nFileSizeHigh << " " << data.nFileSizeLow << std::endl;
    }
    while(FindNextFile(h,&data));
  }
  FindClose(h);
  return 0;
}

:

------ Build started: Project: help - show content, Configuration: Debug Win32 ------
Compiling...
help - show content.cpp
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(7) : error C2065: 'WIN32_FIND_DATA' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(7) : error C2146: syntax error : missing ';' before identifier 'data'
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(7) : error C2065: 'data' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(8) : error C2065: 'HANDLE' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(8) : error C2146: syntax error : missing ';' before identifier 'h'
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(8) : error C2065: 'h' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(8) : error C3861: 'FindFirstFile': identifier not found
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(9) : error C2065: 'INVALID_HANDLE_VALUE' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2653: 'std' : is not a class or namespace name
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2065: 'cout' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2228: left of '.cFileName' must have class/struct/union
        type is ''unknown-type''
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2228: left of '.nFileSizeHigh' must have class/struct/union
        type is ''unknown-type''
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2228: left of '.nFileSizeLow' must have class/struct/union
        type is ''unknown-type''
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2653: 'std' : is not a class or namespace name
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(13) : error C2065: 'endl' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(15) : error C3861: 'FindNextFile': identifier not found
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(17) : error C3861: 'FindClose': identifier not found
Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\help - show content\help - show content\Debug\BuildLog.htm"
help - show content - 17 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Avatar billede bertelbrander Novice
17. december 2005 - 11:12 #8
Jeg tror at du skal have instaleret "platform sdk" fra Microsoft, klick på "Windows Platform SDK" på denne side:

http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
Avatar billede Slettet bruger
17. december 2005 - 20:28 #9
Hvordan installeres det? (Jeg har downloadet det.)
Avatar billede bertelbrander Novice
17. december 2005 - 23:24 #10
Det komme lidt an på hvad du har downloadet.
Hvis du har downloadet PSDK-FULL.1.cab - PSDK-FULL.16.cab skal du også downloade og køre  PSDK-FULL.exe
Avatar billede Slettet bruger
18. december 2005 - 08:02 #11
Kan man ikke bare downloade en fuld pakke...?
Avatar billede Slettet bruger
18. december 2005 - 08:03 #12
(Jeg har PSDK-FULL.1.cab)
Avatar billede bertelbrander Novice
18. december 2005 - 13:02 #13
Du kan instalere fra internet på denne side:
http://www.microsoft.com/downloads/details.aspx?familyid=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist

Ellers skal du downloade PSDK-FULL.2.cab - PSDK-FULL.16.cab og PSDK-FULL.exe
Avatar billede Slettet bruger
18. december 2005 - 15:41 #14
Ok, installerer det nu...
Avatar billede Slettet bruger
18. december 2005 - 15:42 #15
Hvad skal jeg vælge?
Avatar billede bertelbrander Novice
18. december 2005 - 16:55 #16
Hvad skal du vælge hvor?
Hvilke valgmuligheder har du?
Avatar billede Slettet bruger
18. december 2005 - 19:38 #17
PSDK-amd64.exe,
PSDK-ia64.exe og
PSDK-x86.exe.
Avatar billede bertelbrander Novice
18. december 2005 - 19:48 #18
PSDK-x86.exe, medmindre du har brug for at kunne lave programmer specifikt til 64bit CPU'er.
Avatar billede Slettet bruger
20. december 2005 - 15:07 #19
Ok... Prøver lige...
Avatar billede Slettet bruger
20. december 2005 - 15:53 #20
Den er tung for mit langsomme internet... Men pyt!
Avatar billede Slettet bruger
20. december 2005 - 17:23 #21
HMPH!
Den returnerer:

------ Build started: Project: help - show content, Configuration: Debug Win32 ------
Compiling...
help - show content.cpp
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(12) : error C2871: 'std' : a namespace with this name does not exist
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(16) : error C2065: 'WIN32_FIND_DATA' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(16) : error C2146: syntax error : missing ';' before identifier 'data'
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(16) : error C2065: 'data' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(17) : error C2065: 'HANDLE' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(17) : error C2146: syntax error : missing ';' before identifier 'h'
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(17) : error C2065: 'h' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(17) : error C3861: 'FindFirstFile': identifier not found
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(18) : error C2065: 'INVALID_HANDLE_VALUE' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2653: 'std' : is not a class or namespace name
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2065: 'cout' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2228: left of '.cFileName' must have class/struct/union
        type is ''unknown-type''
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2228: left of '.nFileSizeHigh' must have class/struct/union
        type is ''unknown-type''
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2228: left of '.nFileSizeLow' must have class/struct/union
        type is ''unknown-type''
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2653: 'std' : is not a class or namespace name
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(22) : error C2065: 'endl' : undeclared identifier
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(24) : error C3861: 'FindNextFile': identifier not found
c:\documents and settings\administrator\my documents\visual studio 2005\projects\help - show content\help - show content\help - show content.cpp(26) : error C3861: 'FindClose': identifier not found
Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\help - show content\help - show content\Debug\BuildLog.htm"
help - show content - 18 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

!!!
Avatar billede bertelbrander Novice
20. december 2005 - 20:00 #22
Er det koden fra "17/12-2005 10:41:57"?

Hvad står der i linie 12?

Prøv at slette std:: foran cout og endl.

Eller slet #include <stdafx.h> og fortæl kompileren at du ikke vil bruge "precompiled headers"
Avatar billede Slettet bruger
01. januar 2006 - 16:12 #23
Undskyld, men jeg har ikke lige fået kikket på det...
Kan du ikke bare smide et svar, bertelbrander?
Så kan i jo dele pointene...
Ved ikke helt, hvornår jeg for taget mig sammen til at fortsætte med C++...
(Har også gang i en hjemmeside, tre spil og en masse rod...)
Avatar billede bertelbrander Novice
01. januar 2006 - 17:35 #24
Jeg samler ikke på point, giv dem til Rune (medions).

Det er måske lettere at bruge Dev-Cpp eller Code::Blocks, der downloader du det hele som én pakke, som ikke fylder ret meget.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester