>>>>DECLARE INTEGER MoveFile IN Win32API ; >>>> STRING @lpExistingFileName, ; >>>> STRING @lpNewFileName >>>> >>>>oldName = "FILE$$$" >>>>newName = "FILEnew$$$" >>>>STRTOFILE("x",m.oldName) >>>>? FILE(m.oldName),FILE(m.newName) >>>> >>>>IF MoveFile(@m.oldName,@m.newName) > 0 >>>> ? "ok" >>>>ELSE >>>> ? "error" >>>>ENDIF >>>>? FILE(m.oldName),FILE(m.newName) >>>>>>>>
&& "_1HelloЗемля.jpg" binaryUnicode=0H5F003100480065006C006C006F00170435043C043B044F042E006A0070006700 ? STRCONV(binaryUnicode,6)VFP don't support UNICODE, then you can manipulate it like a varbinary only
#DEFINE CREATE_ALWAYS 2 #DEFINE FILE_ATTRIBUTE_NORMAL 128 * look the W suffix for Wide DECLARE INTEGER MoveFileW IN kernel32; STRING lpExistingFileName,; STRING lpNewFileName DECLARE INTEGER CreateFileW IN kernel32; STRING lpFileName,; INTEGER dwDesiredAccess,; INTEGER dwShareMode,; INTEGER lpSecurityAttributes,; INTEGER dwCreationDisposition,; INTEGER dwFlagsAndAttributes,; INTEGER hTemplateFile DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject CLEAR dbyteFileName = 0h+STRCONV(STRCONV("\\?\"+ADDBS(_VFP.DefaultFilePath),1),5); +0H5F003100480065006C006C006F00170435043C043B044F042E006A0070006700 hFile = CreateFileW(m.dbyteFileName+0H0, 0, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0) ? "File handle returned:", hFile = CloseHandle (hFile) ? GETFILE("JPG") * RENAME TO ...name123.jpg =MoveFileW(m.dbyteFileName+ 0h0 ; ,STUFF(m.dbyteFileName,LEN(dbyteFileName)+1-4*2,0,STRCONV(STRCONV("123",1),5))+0h0) ? GETFILE("JPG")use FindFirstFileW, FindNextFile and MoveFileW