Forum: PC-Programmierung C++ Datei aus File zählen


von Pascal (Gast)


Lesenswert?

Guten Tag

Ich möchte mit meinem kleinen Programm die Dateien aus dem Ordner lesen 
und zählen, wie viele Files sich im Ordner befinden.
Bin ich auf einem guten Weg, kann mir jemand Inputs geben?
Komme nicht weiter und hab 5 Errors.

Besten Dank Pascal

von Pascal (Gast)


Lesenswert?

Sorry Hier ist mein Code:

void CFilemakeDlg::Show()
{
HANDLE hSearch = FindFirstFile(".\\Debug\\*.exe") || (".\\*.exe");
BOOL MoreFiles = FALSE;
int count_file  = 0;
int count_dir = 0;

  if (hSearch = INVALID_HANDLE_VALUE) return -1;

      do {
        if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
    {
    count_dir++; // Ordnerzähler um 1 erhöhen
    }
    else
    {
    count_file++; // Dateizähler um 1 erhöhen
                 }
    MoreFiles = FindNextFile(hSearch,&FData);
    }
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Komme nicht weiter und hab 5 Errors.

WELCHE?!

>  if (hSearch = INVALID_HANDLE_VALUE) return -1;

Ersetze = durch ==

von Pascal (Gast)


Lesenswert?

FindFirst function does not have 1 parameter
dwFileAttributes must hace a class/struct/union type

die anderen Fehler sollte ich mit richtigem Deklarieren beheben können.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> FindFirst function does not have 1 parameter

Na, was sagt uns das?
1
HANDLE FindFirstFile(
2
  LPCTSTR lpFileName,               // file name
3
  LPWIN32_FIND_DATA lpFindFileData  // data buffer
4
);

(Funktionsprototyp, so in Win32-API-Funktion deklariert)


Achja, und was ist
1
HANDLE hSearch = FindFirstFile(".\\Debug\\*.exe") || (".\\*.exe");

das für ein Quatsch?

von Rolf Magnus (Gast)


Lesenswert?

>>  if (hSearch = INVALID_HANDLE_VALUE) return -1;
>
> Ersetze = durch ==

Das ist doch mal so einer von den klassischen Fehlern, der man gleich 
erkannt hätte, wenn man die Konstante auf die linke Seite geschrieben 
hätte.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das sieht aber hässlich aus ... und anständige C-Compiler erzeugen bei 
genau diesem Statement wenigstens eine Warnung.

von Rolf Magnus (Gast)


Lesenswert?

> Das sieht aber hässlich aus ...

Es sieht ungewohnt aus, wenn man es nur in der anderen Reihenfolge 
kennt.

> und anständige C-Compiler erzeugen bei genau diesem Statement
> wenigstens eine Warnung.

Was nervt, wenn man wirklich eine Zuweisung gemeint hat. Dann muß man 
sich mit so Krücken behelfen wie die Klammern beim if doppelt 
auszuführen, um den Compiler zu beruhigen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Was nervt, wenn man wirklich eine Zuweisung gemeint hat.

... was man sich natürlich genauso abgewöhnen könnte wie man sich die 
"hässliche" Schreibweise angewöhnen könnte.

Also alles nur eine Frage der Gewohnheit; ich vermeide es, Zuweisungen 
in Vergleichsoperationen zu verwenden.

Also:
Jeder Weg ist richtig, aber das "Programm" von Pascal strotzt vor 
Fehlern.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.