I wszystko jasne. XE jest 2010 roku. Radzę zmienić kompilator, bo aktualny standard jest z 2014, a szykuje się nowy w 2017. Twoje środowisko zapewne jedzie na standardzie z 2003 roku, a od tamtego czasu sporo się zmieniło, i coraz częściej będziesz miał problemy z kompilacją nawet banalnych kodów.
(...) ale z tych kawałków kodu, które podajesz nie da się nic sklecić.
Nie "nie da się nic sklecić", tylko Ty prawdopodobnie nie bardzo wiesz, co ten kod robi. Ta pętla ładuje do vectora wszystkie nazwy plików zwrócone przez
ReadDirectoryChangesW. Co nie oznacza, że jeśli do katalogu zostanie dodanych 100 plików, to w vectorze po jednym wywołaniu będzie także 100 nazw. To tak nie działa.
ReadDirectoryChangesW zwróci Ci tyle nazw, ile będzie w danej chwili w wewnętrznym buforze.
Gdzie dokładnie jest nazwa ostatniego pliku
W ostatnim elemencie vectora.
i jak ją przepisać do zmiennej UnicodeString?
Użyj metody
wstring::
c_str. Może można by było od razu dać
vector<UnicodeString>, gdyby
UnicodeString miał konstruktor taki jak ten z
wstringa. Nie wiem, albo ślepy jestem, albo w tej durnej dokumentacji nie ma opisu konstruktorów dla tej klasy ;\ Musisz sam sobie to sprawdzić. Zwykłe przypisanie
FILE_NOTIFY_INFORMATION::
FileName nie wchodzi w grę.