W nowych środowiskach stosuje się domyśle już UnicodeString a nie AnsiString. Pierwszy kod powinien działać o ile masz odpowiednio ustawione środowisko. Niestety nie wiem co trzeba przestawić w tej wersji środowiska. Co się zaś tyczy funkcji
CopyFileA to wymusza ona stosowania AnsiString zamiast UnicodeString. Używanie AnsiString uniemożliwi ci kopiowanie plików zawierających w nazwie znaki unicode.
Tak czy owak funkcję CopyFile należy stosować w nowszych wersjach środowiska w ten sposób:
CopyFile( L"c:\\temp\\readme.txt", L"c:\\Moje dokumenty\\readme.txt", true ); /* podwójne ukośniki, nie poczwórne */
Funkcja oczekuje wartości typu wchar_t a nie char więc należy każdy łańcuch znaków poprzedzić znakiem
LGdybyś chciał tam wstawić ścieżki z jakiejś zmiennej to robisz to tak:
String sPath = "c:\\temp\\readme.txt";
CopyFile( sPath.c_str(), L"c:\\Moje dokumenty\\readme.txt", true );
Gdybyś chciał mieszać zmienną z łańcuchem znaków to wtedy tak:
String sPath = "c:\\temp\\";
String sDoc = "c:\\Moje dokumenty\\";
String sFile = "readme.txt";
CopyFile( (sPath + "readme.txt").c_str(), (sDoc + sFile).c_str(), true );
Skoro chcesz używać ścieżki dostępu z kontrolki TEdit to robisz to tak:
W Edit1 ścieżkę podajemy normalnie, czyli: c:\Users\Do\Desktop\O8905.NC bez podwójnych ukośników
String sDesPath = "d:\\pendrive\\" + ExtractFileName(Edit1->Text); /* ścieżka docelowa, z Edit1 ekstrahuję nazwę pliku */
CopyFile( Edit1->Text.c_str(), sDestPath.c_str(), true );
Ścieżkę docelową musisz podać, bo program się jej nie domyśli.