LPSTR's zusammensetzen in eine neue LPSTR

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • LPSTR's zusammensetzen in eine neue LPSTR

    Hallo, coding-community.
    Jetzt verzweifle ich langsam nach ner halben Stunde googlen
    und finde einfach keien Möglichkeit, LPSTR's zusammenzusetzen!

    Quellcode

    1. #include <windows.h>
    2. #include <stdio.h>
    3. #define BUFSIZE 8192
    4. int WINAPI WinMain (HINSTANCE hThisInstance,
    5. HINSTANCE hPrevInstance,
    6. LPSTR lpCmdLine,
    7. int Commands) {
    8. // ..... Windows-Benutzername ermitteln.
    9. LPTSTR lpszSystemInfo; // pointer to system information string
    10. DWORD cchBuff = BUFSIZE; // size of computer or user name
    11. TCHAR tchBuffer[BUFSIZE]; // buffer for string
    12. DWORD fehler;
    13. lpszSystemInfo = tchBuffer;
    14. GetUserName(lpszSystemInfo, &cchBuff);
    15. // ..... benutzername in einer MessageBox ausgeben.
    16. MessageBox (0, lpszSystemInfo, "Benutzername", MB_ICONINFORMATION);
    17. // ..... Ab hier klappt alles!
    18. HANDLE fHandle;
    19. WIN32_FIND_DATA wfd;
    20. fHandle = FindFirstFile("C:/Dokumente und Einstellungen/X/Eigene Dateien/Eigene Bilder/*", &wfd);
    21. FindNextFile (fHandle, &wfd);
    22. while (FindNextFile(fHandle, &wfd)) {
    23. if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
    24. MessageBox (0, wfd.cFileName, "Folgende Unterverzeichnisse gefunden:", 0);
    25. } else {
    26. int ok = MessageBox (0, wfd.cFileName, "Datei löschen?", MB_OKCANCEL|MB_ICONQUESTION);
    27. if (ok == 1) {
    28. remove (wfd.cFileName);
    29. MessageBox (0, wfd.cFileName, "Datei gelöscht!", MB_ICONINFORMATION);
    30. } else {
    31. MessageBox (0, wfd.cFileName, "Datei nicht gelöscht!", MB_ICONINFORMATION);
    32. }
    33. }
    34. }
    35. FindClose(fHandle);
    36. return 0;
    37. }
    Alles anzeigen


    Auf Zeile 33

    Quellcode

    1. remove (wfd.cFileName);


    würde ich gerne

    Quellcode

    1. remove ("C:/Dokumente und Einstellungen/X/Eigene Dateien/Eigene Bilder/"+wfd.cFileName);


    draus machen, aber das gibt dann einen
    33 C:\Dokumente und Einstellungen\X\Desktop\Neuer Ordner (2)\main.cpp invalid operands of types `const char[63]' and `CHAR[260]' to binary `operator+'

    Kann mir jemand sagen, wie ich die das zusammengekettet bekomme??
  • Problembericht senden|nicht senden!
    :'((((((((((((((((((((((((((((((((((((((

    Quellcode

    1. #include <windows.h>
    2. #include <stdio.h>
    3. int WINAPI WinMain (HINSTANCE hThisInstance,
    4. HINSTANCE hPrevInstance,
    5. LPSTR lpCmdLine,
    6. int Commands) {
    7. // ..... Pfad in einer MessageBox ausgeben.
    8. char* pfad = "C:/Dokumente und Einstellungen/"; strcpy(pfad, "X/Eigene Dateien/Eigene Bilder/");
    9. MessageBox (0, pfad, "Pfad", MB_ICONINFORMATION);
    10. return 0;
    11. }
    Alles anzeigen


    Wieso hilft mir nur keiner???

    Edit

    Quellcode

    1. #include <windows.h>
    2. #include <stdio.h>
    3. int WINAPI WinMain (HINSTANCE hThisInstance,
    4. HINSTANCE hPrevInstance,
    5. LPSTR lpCmdLine,
    6. int Commands) {
    7. // ..... Benutzername in einer MessageBox ausgeben.
    8. char pfad[200] = "C:/Dokumente und Einstellungen/";
    9. strcpy(pfad, "X/Eigene Dateien/Eigene Bilder/");
    10. MessageBox (0, pfad, "Pfad", MB_ICONINFORMATION);
    11. return 0;
    12. }
    Alles anzeigen


    Gibt "X/Eigene Dateien/Eigene Bilder/" in der MessageBox aus!

    Edit 2

    Hab's jetzt geschafft. (str_cat)
    Danke für eure Hilfe -,-
  • Hallo,

    wenn Du eine C Variante möchtest, dann z.B. so

    char buffer[1024];
    sprintf( buffer, "%s%s", pfad, "C:/Dokumente und Einstellungen/X/Eigene Dateien/Eigene Bilder/");

    In buffer sind jetzt die beiden Zeichenketten drin.

    Besser ist aber

    std::string sText = "C:/Dokumente und Einstellungen/X/Eigene Dateien/Eigene Bilder/";
    sText += wfd.cFileName;

    Jetzt ist sind beide Zeichenketten in sText drin.
    sText vom Typ std::string kann man dann wieder in einen const char*
    umwandeln.

    const char* cText = sText.c_str();

    oder man macht es über Streams.
  • OK, probier ich gleich mal aus.
    Sobald ich jetzt mein nächstes Problem gelöst habe...

    Quellcode

    1. #include <windows.h>
    2. #include <stdio.h>
    3. #define BUFSIZE 8192
    4. int WINAPI WinMain (HINSTANCE hThisInstance,
    5. HINSTANCE hPrevInstance,
    6. LPSTR lpCmdLine,
    7. int Commands) {
    8. // ..... Windows-Benutzername ermitteln.
    9. LPTSTR lpszSystemInfo; // pointer to system information string
    10. DWORD cchBuff = BUFSIZE; // size of computer or user name
    11. TCHAR tchBuffer[BUFSIZE]; // buffer for string
    12. DWORD fehler;
    13. lpszSystemInfo = tchBuffer;
    14. GetUserName(lpszSystemInfo, &cchBuff);
    15. // ..... Pfad zu den Gemeinsamen Bildern erstellen.
    16. char pfad[200] = "C:/Dokumente und Einstellungen/";
    17. char* datei;
    18. strcat (pfad, lpszSystemInfo);
    19. strcat (pfad, "/Eigene Dateien/Eigene Bilder/");
    20. // ..... Ab hier klappt alles!
    21. HANDLE fHandle;
    22. WIN32_FIND_DATA wfd;
    23. fHandle = FindFirstFile("C:/Dokumente und Einstellungen/X/Eigene Dateien/Eigene Bilder/*", &wfd);
    24. FindNextFile (fHandle, &wfd);
    25. int ok;
    26. while (FindNextFile(fHandle, &wfd)) {
    27. datei = pfad;
    28. MessageBox (0, datei, "------ 1", MB_ICONINFORMATION);
    29. if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
    30. MessageBox (0, wfd.cFileName, "Folgende Unterverzeichnisse gefunden:", 0);
    31. } else {
    32. strcat (datei, wfd.cFileName);
    33. remove (datei);
    34. MessageBox (0, datei, "------ 2", MB_ICONINFORMATION);
    35. ok = MessageBox (0, wfd.cFileName, "Datei löschen?", MB_OKCANCEL|MB_ICONQUESTION);
    36. if (ok == 1) {
    37. MessageBox (0, datei, "Datei gelöscht!", MB_ICONINFORMATION);
    38. } else {
    39. MessageBox (0, wfd.cFileName, "Datei nicht gelöscht!", MB_ICONINFORMATION);
    40. }
    41. }
    42. }
    43. FindClose(fHandle);
    44. return 0;
    45. }
    Alles anzeigen


    Hier scheint

    Quellcode

    1. strcat (datei, wfd.cFileName);


    Den Namen der aktuell durchlaufenden Datei auch an
    die Varieble pfad anzuhängen, was es aber nicht soll.
    Wieso???