Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
#include <windows.h>
#include <iostream>
#include <string>
int main()
{
char buffer[1024];
const DWORD result(::GetLogicalDriveStringsA(1024, buffer));
if (result > 1024) { std::cerr << "FEHLER: Buffer zu klein!"; return 1; }
else if (result == 0) { std::cerr << "FEHLER: Kein Laufwerk gefunden!"; return 1; }
for (char* ptr_item = buffer; *ptr_item; ptr_item += std::strlen(ptr_item) + 1)
{
std::string current_drive(ptr_item);
current_drive.append("//*");
std::clog << current_drive << std::endl;
_tSearchPath(current_drive.c_str());
}
std::cin.get();
}
Hey,
super Danke! Jetzt findet er auch etwas! Die Ausgabe ist aber sehr komisch!
Mein Quelltext sieht jetzt folgendermaßen aus:
Code:#define SEARCH_FOLDER "D:\\Suche\\*" int _tmain(int argc, _TCHAR* argv[]) { WIN32_FIND_DATA FData; HANDLE hSearch = FindFirstFile(_T(SEARCH_FOLDER),&FData); BOOL MoreFiles = FALSE; int cnt_file = 0, cnt_dir = 0; if (hSearch == INVALID_HANDLE_VALUE) return -1; do { // Ist das ein Ordner ? if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { // Den Ordnernamen ausgeben cout<<"(Ordner) "<<FData.cFileName<<endl; cnt_dir++; // Ordnerzähler um 1 erhöhen } // Wenn nicht else { // Den Dateinamen ausgeben cout<<"(Datei) "<<FData.cFileName<<endl; cnt_file++; // Dateizähler um 1 erhöhen } MoreFiles = FindNextFile(hSearch,&FData); } while (MoreFiles); FindClose(hSearch); cout<<endl<<"Insgesamt"<<endl <<"Ordner: "<<cnt_dir<<endl <<"Dateien: "<<cnt_file; _getch(); return 0; }
Da bekomm ich folgende Ausgabe:
(Ordner) 0012FD3C
(Ordner) 0012FD3C
(Datei) 0012FD3C
Insgesamt
Ordner: 2
Dateien: 1
In dem Ordner Suche existiert allerdings nur eine einzige Test.txt Datei!
Wenn ich das define wie folgt implementiere:
Code:#define SEARCH_FOLDER "D:\\Suche\\Test.txt"
bekomme ich folgende Ausgabe:
(Datei) 0012FD3C
Insgesamt
Ordner: 0
Dateien: 1
Warum sieht denn die Ausgabe so blöd aus? Warum zeigt der mir nur Hex-Zahlen an und nicht den Dateinamen? Vor allem bei der ersten Ausgabe? Was findet er denn da für Ordner und alles? Ich versteh das leider net.
Gruß
Dorschty
Ps.anke für deine Geduld mit mir!
Du hast vermutlich die UNICODE Unterstützung aktiviert und demnach versucht einen wchar_t* auszugeben, dabei wird dann nur die Adresse des Zeigers ausgegeben.Hab das selbe Problem. und will keinen neuen Thread dafür aufmachen. Weiß einer wie ich dies ändern kann?
errno_t err = rename(filename, newname);
Du verwendest grundsätzlich die generischen Funktionen und Typen aus tchar.h. Siehe http://msdn.microsoft.com/en-us/library/tsbaswba(VS.80).aspxWie kann ich den nun mit den Dateinamen arbeiten ohne Strings zu benutzen und Unicode auszuschalten.
Das würde nicht funktionieren. Du mußt _trename verwenden.Nun soll alarm.mp3 in alarm_4.mp3 umbenannt werden. Die Zahlnendung hängt davon ab wieviele DAteien bereits vorhanden sind. bzw. was die nächste Zahl in der Reihenfolge ist. Dazu würde ich jetzt schauen, wie oft "alarm_" im Dateinamen vorkommt , und so die nächste Zahl ermitteln.
Das umbenenne würde ich mit
machen.C++:errno_t err = rename(filename, newname);
Habe gerade so etwas geschrieben, vielleicht hilfts...
Code:void CFile::search(fstream &FS) { char savepath[MAX_PATH]; // zur Zwischenspeicherung des Pfades int len; WIN32_FIND_DATA FindFileData; HANDLE hFind; strcpy(savepath, path); // Sicherung des Pfades strcat(path, "\\*"); hFind = FindFirstFile(path, &FindFileData); if(hFind == INVALID_HANDLE_VALUE) { cout << "Datei nicht vorhanden oder anderer Fehler..." << endl << "GetLastError: " << GetLastError () << endl; } else { do { int result = strcmp(FindFileData.cFileName, "."); int result2 = strcmp(FindFileData.cFileName, ".."); if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && result != 0 && result2 !=0) { len=strlen(path); strcpy(&path[len-2], "\0"); strcat(path, FindFileData.cFileName); strcat(path, "\\"); search(FS); strcpy(path, savepath); strcat(path, "\\*"); } else { char file_end[MAX_PATH]; strcpy(file_end,FindFileData.cFileName); len=strlen(file_end); strcpy(&file_end[len-4], "\0"); strcat(file_end, type); if((strcmp(file_end, FindFileData.cFileName)) == 0) { cout << savepath << FindFileData.cFileName << endl; } } } while(FindNextFile(hFind, &FindFileData)); } FindClose(hFind); }// end search
#include <vcl.h>
#include <iostream>
#include <windows.h>
using namespace std;
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void CFile::search(fstream &FS) {
char savepath[MAX_PATH]; // zur Zwischenspeicherung des Pfades
int len;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
strcpy(savepath, path); // Sicherung des Pfades
strcat(path, "\\*");
hFind = FindFirstFile(path, &FindFileData);
if(hFind == INVALID_HANDLE_VALUE) {
cout << "Datei nicht vorhanden oder anderer Fehler..." << endl << "GetLastError: " << GetLastError () << endl;
}
else {
do {
int result = strcmp(FindFileData.cFileName, ".");
int result2 = strcmp(FindFileData.cFileName, "..");
if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && result != 0 && result2 !=0) {
len=strlen(path);
strcpy(&path[len-2], "\0");
strcat(path, FindFileData.cFileName);
strcat(path, "\\");
search(FS);
strcpy(path, savepath);
strcat(path, "\\*");
}
else {
char file_end[MAX_PATH];
strcpy(file_end,FindFileData.cFileName);
len=strlen(file_end);
strcpy(&file_end[len-4], "\0");
strcat(file_end, type);
if((strcmp(file_end, FindFileData.cFileName)) == 0) {
cout << savepath << FindFileData.cFileName << endl;
}
}
} while(FindNextFile(hFind, &FindFileData));
}
FindClose(hFind);
}// end search
//---------------------------------------------------------------------------
Wie bereits da steht, du hast weder eine Klasse noch einen Namensraum der "CFile" heißt definiert.Als Fehler kommt:
//////
[BCC32 Fehler] Unit1.cpp(20): E2090 Qualifizierer 'CFile' ist kein Name einer Klasse oder eines Namespace
[BCC32 Fehler] Unit1.cpp(20): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
/////