ups ja:
#include <cstdlib>
#include <iostream>
#include <string>
#include <sstream>
#include <stdio.h>
#include "dirent.h"
#include <fstream>
using namespace std;
string ListDF(int returnType, std::string DirToSearch);
string ListDF(int returnType, std::string DirToSearch)
{
DIR *dirp;
string Directorys[1024];
int DC = 0;
string FilesAR[2048];
int FC = 0;
string Dirs;
string Files;
string buffer;
string dete;
std::string Path;
system("cls");
struct dirent *entry;
string LOC = DirToSearch;
LOC += "Located";
std::ofstream Located;
Located.open(LOC.c_str());
if (!Located)
{
Located.close();
return "FAILED";
}
Located.close();
if(dirp = opendir(DirToSearch.c_str()))
{
int a = 0;
while (entry = readdir(dirp))
{
a++;
int i = 0;
dete += entry->d_name;
std::ifstream Detect;
Path = DirToSearch;
Path += "\\";
Path += dete;
Detect.open(Path.c_str());
if (a > 2)
{
if (Detect)
{
Files += dete;
Files += "\n";
FC++;
FilesAR[FC-1] = dete;
}
else
{
Dirs += dete;
Dirs += "\n";
DC++;
Directorys[DC-1] = dete;
}
}
dete = "";
Detect.close();
}
closedir(dirp);
}
if (returnType == 0)
{
std::ofstream Out;
Out.open("Maplist.mpl");
Out << Dirs;
Out.close();
}
if (returnType == 1)
{
return Files;
}
if (returnType == 2)
{
return Dirs;
}
if (returnType == 3)
{
string all;
all = "Dateien:\n";
if (Files != "")
{
all += Files;
if (Dirs != "")
all += "\nOrdner:";
all += "\n";
}
if (Dirs != "")
all += Dirs;
return all;
}
if (returnType == 4)
{
string Seperate = "Keine Dateien";
int Seperator = 0;
if (FC > Seperator)
Seperate = "";
while (Seperator < FC)
{
Seperator++;
Seperate += FilesAR[Seperator-1];
if (Seperator < FC)
Seperate += "||";
}
return Seperate;
}
if (returnType == 5)
{
string Seperate = "Keine Verzeichnisse";
int Seperator = 0;
if (DC > Seperator)
Seperate = "";
while (Seperator < DC)
{
Seperator++;
Seperate += Directorys[Seperator-1];
if (Seperator < DC)
Seperate += "||";
}
return Seperate;
}
return "FEHLER";
}
Im grunde hab ich das Problem, dass er die dirent.h nicht kennt, gibts ne VC++ Alternative, die ähnliches kann (sicher, ich kenne sie nur nicht)
btw: wusste ich jetzt nicht wie man bei dirent.h unter Files und Directorys unterscheidet. Deshalb meine kleine Notlösung hier.
ALSO: Alternative
EDIT: UPS mom ich editiere
EDIT 2: Code editiert von Console zu VC++ header.
Ich hab jetzt so ziemliche Scheiße gebaut, da ich vorher dirent.h und die mingw.h zu den VC includes hinzugefügt hab, dann kannte er es zwar aber die Linkerfehler sind erschienen. Ich hab sie wieder entfernt aber die Fehler bleiben, aber da ich das jetzt eh nicht benutzen werden, da unbekannt (war).
ALSO 2: ALternative
EDIT 3: Linkerfehler weg, dirent.h unbekannt -> Programm neustart
ALSO 3: wieder alles in Ursprungsform -> ALTERNATIVE
EDIT 4: habe eine VC++ dirent.h gefunden.
Das mitgelieferte Projekt kompiliert aber meins nicht, siehe Linkerfehler.
Ich verstehe nicht ???
EDIT 5: Habs jetzt wenn ich es lokal include gehts wunderbar mit der neuen dirent.h. (REIM )
EDIT 6: Ich editiere sie gerade auf die gewünschte Funktion. Das waren alles Notlösungen von einem anderen Programm, das das Consolenprogramm ausgeführt hat und die angaben gelesen, aber ich schreibs jetzt zur Funktion um.
Verbesserungsvorschläge bitte, ich update es regelmäßig in den nächsten Tagen.
EDIT 7: Merze noch ein Paar Fehler aus
EDIT 8: er kennt d_namelen nicht mehr, nutze alternative -> Fehler -> suche weitere alternative zur länge... bitte warten
EDIT 9: Schleife ausgebaut, durch neue dirent.h nicht mehr notwendig.
EDIT 10: Erstmal bleibt es so habe den Code aktualisiert.
EDIT 11: Code Aktualisiert