Dateien auf Desktop Kopieren
-
MFK schrieb:
SHGetFolderPath ist noch einfacher:
Kurze Querfrage: Warum?
MfG SideWinder
-
SideWinder schrieb:
Kurze Querfrage: Warum?
Ich meinte einfacher als SHGetSpecialFolderLocation, weil man sich nicht mit mit einer IDL herumschlagen muss. Das hat sich mit CStolls letztem Beitrag überschnitten.
-
hm.. brauch man irgendwelche headerdateien?
ich habe hier einen kleinen quellcode-ausschnitt:ofstream schreiben; string endung; string datei; endung = ".txt"; int loop = 0; TCHAR path[MAX_PATH]; SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTORY,false); while(loop != 5) { ++loop; char str[3]; sprintf(str, "%d", loop); datei = path + str + endung; schreiben.open(datei.c_str(), ios_base::out); for(long loop2 = 0; loop2 <= 2; ++loop2) { schreiben << loop2 << endl; } schreiben.close();also ich möchte 5 txt-dokumente auf den dektop tun, in denen jeweils 0-2 drinsteht. wie schaffe ich es nun, dass "datei" den Pfad + 1-5 + ".txt" speichert und das ganze dann dahin kopiert wird?
ich bekomme mehrere fehlermeldungen, unter anderem, dass 2 zeiger nicht addiert werden können und dass SHGetSpecialFolderPath und CSIDL_DESKTOPDIRECTORY nicht-deklarierte bezeichner seien... was mache ich falsch?
mfg
Lorizean
-
hm, hab jetzt die nötigen ehader-dateien eingebunden, aber mein problem mit dem datei-namen bleibt..
-
Lorizean schrieb:
ich bekomme mehrere fehlermeldungen, unter anderem, dass 2 zeiger nicht addiert werden können
Der String::operator+ greift leider nicht, wenn du nur char* verwendest, also mußt du einen der Operanden in std::string umwandeln:
datei = string(path) + str + endung;und dass SHGetSpecialFolderPath und CSIDL_DESKTOPDIRECTORY nicht-deklarierte bezeichner seien
in der Dokumentation nach dem richtigen Header suchen und den einbinden.
-
vielen dank leute^^
-
BTW: Wenn du schon auf die WinAPI zurückgreifst um den Desktop-Pfad zu eruieren, kannst du die WinAPI auch gleich fürs Kopieren verwenden: CopyFile()
MfG SideWinder
-
hiho
ich benutzte den CodeBlocks Compiler (v1.0). Doch spuckt bei
TCHAR path[MAX_PATH]; SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTORY,false); TCHAR path2[MAX_PATH]; SHGetSpecialFolderPath(0,path2,CSIDL_COMMON_STARTUP,false);"immer eine Fehlermeldung aus (undeclared, first use of function).
Weis jemand, wie ich das mit dem codeBlocks Compiler machen kann?
-
Da habe ich schon nochgeschaut. Das einzige, was ich gefunden habe, war:
Header: shellapi.h
Ich habe schon versucht, es mit der shellapi.h von codeblocks und mit der shellapi.h von MS Visual Studio zu kompilieren. Beides ohne erfolg...
Woran liegt der Fehler denn? Denn den selben Quelltext kann ich mit MS Visual Studio C++ porblemlos kompilieren (allerdings kommt dann immer dieses störende "Anmerkung" Fenster.
Freue mich über alle Antworten
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum 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.
-
Wenn ich
TCHAR path[MAX_PATH]; SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTORY,false); TCHAR path2[MAX_PATH]; SHGetSpecialFolderPath(0,path2,CSIDL_COMMON_STARTUP,false);über die main datei schreibe kommt die Fehlermeldung:
main.cpp:17: error: expected constructor, destructor, or type conversion before '(' token main.cpp:17: error: expected `,' or `;' before '(' tokenIch kireg das einfach nich hin... Weis denn keiner Rat? ^^
-
Der Code muss schon in eine Funktion - main oder was auch immer. Das sind aber absolute Grundlagen.
-
ja schon, aber inzwischen bin ich so verzweifelt, dass ich alles ausprobiere

-
Wie MFK sagte, ausführbarer Code darf nicht frei im Raum rumstehen (sonst weiß der Compiler nicht, wann er den Code aufrufen soll:
TCHAR path[MAX_PATH]; TCHAR path2[MAX_PATH]; void init_paths() { SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTORY,false); SHGetSpecialFolderPath(0,path2,CSIDL_COMMON_STARTUP,false); } int main() { init_paths(); ...//weiterer Anwendungscode }
-
-
auchda kommt folgende fehlermeldung:
test/main.cpp:9: error: `SHGetSpecialFolderPath' undeclared (first use this function)
-
Hast du auch die shellapi.h mit eingebunden? (btw, wenn, dann bitte die Version deines eigenen Compilers)
PS: Was meinstest du eigentlich mit "Anmerkung"-Fenster?