nicht leeres verzeichnis löschen mit c
-
hoi erstmal, ich habe folgendes problem.
ich habe eine funktion in c geschrieben die mir ein nicht leeres verzeichnis löscht. soweit funktioniert sie auch wenn ich den pfad von hand in den code schreibe, ich will nun aber das der benutzer den pfad selber angeben kann. und irgendwie rafft der compiler das mit der übergabe nicht.Loeschen.c
#include "Loeschen.h" bool Loeschen(LPCTSTR lpszDir, bool noRecycleBin = true) { int len = _tcslen(lpszDir); TCHAR *pszFrom = new TCHAR[len+2]; _tcscpy(pszFrom, lpszDir); pszFrom[len] = 0; pszFrom[len+1] = 0; SHFILEOPSTRUCT fileop; fileop.hwnd = NULL; // no status display fileop.wFunc = FO_DELETE; // delete operation fileop.pFrom = pszFrom; // source file name as double null terminated string fileop.pTo = NULL; // no destination needed fileop.fFlags = FOF_NOCONFIRMATION|FOF_SILENT; // do not prompt the user if(!noRecycleBin) fileop.fFlags |= FOF_ALLOWUNDO; fileop.fAnyOperationsAborted = FALSE; fileop.lpszProgressTitle = NULL; fileop.hNameMappings = NULL; int ret = SHFileOperation(&fileop); delete [] pszFrom; return (ret == 0); }
main.c
#include "Loeschen.h" int main() { char cPfad[255]; printf("Bitte geben sie den Pfad f\x81r das Verzeichnis oder die Datei die Gel\x94scht werden soll an: \n"); scanf("%s", &cPfad); printf("\nSie haben %s eingebeben \n", cPfad); if( (Loeschen( L"cPfad", false )) == 0 ) { printf("Fehler beim L\x94schen!\n"); } else { printf("L\x94schen erfolgreich!\n"); } return 0; }
weiß einer rat? gibt es vllt ne bessere variante ?
danke schon mal im vorraus
-
Loeschen( L"cPfad", false ) => Loeschen( cPfad, false )
-
nee das geht doch net da die funktion in dem punkt einen LPCTSTR erwartet und das L vor den doppelten hochkommas konvertiert das. ich hätte auch _T("cPfad") schreiben können ist nämlich das gleiche
EDIT: das merkwürdige ist ja wenn ich das so
if( (Loeschen( L"c:\\test", false )) == 0 )
schreibe geht es ja
-
die zeichenfolge "cPfad" konvertiert zu sonsteinem datentyp bringt dir nicht so viel.
du solltest den _inhalt der variable cPfad_ konvertieren ...mfg,
julian
-
versteh ich jetzt nicht ganz Julian__ ich lese doch mit scanf etwas ein und weise das an cPfad wenn ich cPfad jetzt konvertiere müsste der inhalt noch mitkonvertiert werden, oder sehe ich da den wald vor lauter bäumen nicht?
-
cPfad => variable
"cPfad" => zeichenfolge (string), hat mit der variablenbezeichnung nichts zu tun.
ich weiss nicht wie es geht, habs nie gemacht. so wie du es sagtest koennte es funktionieren mit_T(cPfad)
ohne anfuehrungsstriche, weil du so auf die variable bzw. ihren inhalt zugreifst, sonst aber nur eine zeichenfolge ("cPfad") uebergibst.
mfg,
julian
-
funktioniert leider auch nicht, ich erhalte nur diese fehlermeldung:
...\loeschen\main.cpp(12) : error C2065: 'LcPfad': nichtdeklarierter Bezeichner
und wenn ich
if( (Loeschen( L(cPfad), false )) == 0 )
mache dann weiß er nicht was das "L" bedeutet.
-
google sagt:
http://www.programmersheaven.com/mb/Win32API/146681/146681/ReadMessage.aspxmfg,
julian
-
char in Unicode umwandeln mit MultiByteToWideChar()
-
Hi!
Hier steht wie man es mit WinApi Funktionen macht.
http://www.pages.drexel.edu/~mfp27/cppfaqs/
Runterscrollen bis
How do I delete a directory and all of the files inside of it, including the read-only files?
-
meint ihr wirklich das es an der konvertierung liegt? ... ich werde es mal ausprobieren, danke.
-
Wennste mich fragst, ist die Funktion SHFileOperation für dein Vorhaben nicht geegnet.
Die Struktur SHFILEOPSTRUCT hat Member, die vom Typ LPCSTR sind.
Die sind nicht für Konvertierungen zu LPCWSTR vorgesehen.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.