Gesamte Verzeichnisse Kopieren



  • Hallo

    Hier ist ein komplettes Beispiel.

    bis bald
    akari



  • Hallo alle zusammen,

    ich benutze BCB6 Pro und habe ein Problem mit der Deklaration der Funktion CopyFiles();

    Die Code:

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {

    int CopyFiles(AnsiString slSourceDir, AnsiString slTargetDir)
    {
    SHFILEOPSTRUCT sh;
    ZeroMemory(&sh, sizeof(sh));
    sh.hwnd = NULL;
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_FILESONLY;

    sh.wFunc = FO_COPY;

    slSourceDir+='\0';

    sh.pFrom = slSourceDir.c_str();

    slTargetDir+='\0';

    sh.pTo = slTargetDir.c_str();

    sh.hNameMappings = NULL;
    sh.lpszProgressTitle = NULL;
    return SHFileOperation (&sh);
    }
    if(!CopyFiles("d:\\1", "d:\\temp"))
    ShowMessage("Ausführung erfolgreich !");
    else ShowMessage("Fehler aufgetreten !");
    }

    Kommt die Meldung: Fehler in der Deklarationssyntax

    Villecht muss ich etwas includieren?

    Kan mir jemand helfen?

    Alex



  • Du kannst keine Funktion innerhalb einer anderen einbauen

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    if(!CopyFiles("d:\\1", "d:\\temp"))
    ShowMessage("Ausführung erfolgreich !");
    else ShowMessage("Fehler aufgetreten !");
    }
    
    //---------------------------------------------------------------------------
    
    int CopyFiles(AnsiString slSourceDir, AnsiString slTargetDir)
    {
    SHFILEOPSTRUCT sh;
    ZeroMemory(&sh, sizeof(sh));
    sh.hwnd = NULL;
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_FILESONLY;
    
    sh.wFunc = FO_COPY;
    
    slSourceDir+='\0';
    
    sh.pFrom = slSourceDir.c_str();
    
    slTargetDir+='\0';
    
    sh.pTo = slTargetDir.c_str();
    
    sh.hNameMappings = NULL;
    sh.lpszProgressTitle = NULL;
    return SHFileOperation (&sh);
    }
    


  • Ich hab das einfach mal kopiert und bei mir kommt undefinierte Funktion Move Files (bei deinem Beispiel CopyFiles).



  • Da ich nichts derartiges in diesem Codestück geschrieben habe...



  • void __fastcall TForm1::Button1Click(TObject *Sender) 
    { 
    if(!CopyFiles("d:\\1", "d:\\temp")) 
    ShowMessage("Ausführung erfolgreich !"); 
    else ShowMessage("Fehler aufgetreten !"); 
    } 
    
    //--------------------------------------------------------------------------- 
    
    int CopyFiles(AnsiString slSourceDir, AnsiString slTargetDir) 
    { 
    SHFILEOPSTRUCT sh; 
    ZeroMemory(&sh, sizeof(sh)); 
    sh.hwnd = NULL; 
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_FILESONLY; 
    
    sh.wFunc = FO_COPY; 
    
    slSourceDir+='\0'; 
    
    sh.pFrom = slSourceDir.c_str(); 
    
    slTargetDir+='\0'; 
    
    sh.pTo = slTargetDir.c_str(); 
    
    sh.hNameMappings = NULL; 
    sh.lpszProgressTitle = NULL; 
    return SHFileOperation (&sh); 
    }
    

    Zeile 3: if (!CopyFiles...... Siehst du das nicht so? :xmas1:



  • Funktion Move Files

    Ich kann in dieser Zeile nix von MOVE FILES finden



  • IchDuErSieEs schrieb:

    Ich hab das einfach mal kopiert und bei mir kommt undefinierte Funktion Move Files (bei deinem Beispiel CopyFiles).

    Was in Klammern geschrieben ist musst du auch lesen.^^



  • Ich bin des Lesens mächtig, aber da dort nichts von MoveFiles steht, kann der Fehler nicht davon kommen



  • Ok, wenn du probleme damit hast, beschränken wir uns auf deinen Code. Ich habe deinen Code kopiert und dieser funktioniert bei mir nicht. Der Fehler lautet: Aufruf einer undefinierten Funktion CopyFiles. So zufrieden?



  • Du hast doch hoffentlich die Funktion voher irgendwo deklariert, wie es sich gehört?

    int CopyFiles(AnsiString slSourceDir, AnsiString slTargetDir);
    

    Sollte in der h Datei stehen

    Dacht nicht, dass man das noch erwähnen muss



  • Hab ich alles gemacht...



  • offenbar an der falschen Stelle; offenbar mit dem falschen Funktionsnamen. Der Compiler kann genausoweinig wie ich wissen, dass du die Funktion aufeinmal umbenannt hast.



  • Hallo alle zusammen,

    richtig ist:

    //--------------------------------------------------------------------------- 
    //Erst mal die explizite Definition der Funktion CopyFiles()
    
    int CopyFiles(AnsiString slSourceDir, AnsiString slTargetDir) 
    { 
    SHFILEOPSTRUCT sh; 
    ZeroMemory(&sh, sizeof(sh)); 
    sh.hwnd = NULL; 
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_FILESONLY; 
    
    sh.wFunc = FO_COPY; 
    
    slSourceDir+='\0'; 
    
    sh.pFrom = slSourceDir.c_str(); 
    
    slTargetDir+='\0'; 
    
    sh.pTo = slTargetDir.c_str(); 
    
    sh.hNameMappings = NULL; 
    sh.lpszProgressTitle = NULL; 
    return SHFileOperation (&sh); 
    }
    
    //--------------------------------------------------------------------------- 
    //Dann der Aufruf der Funktion
    
    void __fastcall TForm1::Button1Click(TObject *Sender) 
    { 
    if(!CopyFiles("d:\\1", "d:\\temp")) 
    ShowMessage("Ausführung erfolgreich !"); 
    else ShowMessage("Fehler aufgetreten !"); 
    }
    

    Jetzt funktioniert die Code

    Mit freunlichen Grüßen

    Alex


Anmelden zum Antworten