Error: el nombre del directorio de nombre de archivo o la sintaxis de la etiqueta de volumen es incorrecta, en la función Delphi 7 CopyFile

StackOverflow https://stackoverflow.com/questions/4848861

Pregunta

Quiero copiar archivos de una carpeta a otra usando la función CopyFile. Las rutas de los archivos de origen se almacenan en un CientDataSet llamado "ElemsDB". El código es:

Var Source, Dest : String;
Begin
  itemsDB.First;
  While Not itemsDB.EOF do
  Begin
    Source := itemsDB.FieldValues['FileN'];
    Dest := 'C:\NewDir\'+ExtractFileName(Source);
    if Not CopyFile(PChar(Source), PChar(Dest), False) then
          Showmessage(SysErrorMessage(getlasterror()));
     itemsDB.Next;
  end; 
 end

Cuando ejecuto el código, recibo el mensaje de error "El nombre del directorio de nombre de archivo o la sintaxis de la etiqueta de volumen es incorrecta". Verifiqué todas las rutas de archivos en el conjunto de datos, son correctos. En mi ejemplo, mi clientDataSet contiene dos imágenes JPG "c: test1.jpg" y "c: test2.jpg" Cuando probé la fuente: = 'c: test1.jpg', funciona perfectamente, pero cuando obtengo Del ClientDataSet, falla.

Gracias por adelantado

¿Fue útil?

Solución

Respuesta actualizada ...

(Como recomendado...)

Después de una discusión en el campo de los comentarios, se descubrió que el error era inválido caracteres espaciales de fin Source cuerda.

Si el FileN el campo se define como un FixedChar campo de cadena, el Source incluirá estos espacios finales.

Establecer FixedChar a False en el inspector de objetos, o eliminar los caracteres espaciales finales con Source := Trim(Source);

Otros consejos

¿Podría registrar los valores del nombre de archivo y Dest para ver exactamente lo que se está pasando a CopyFile?

Además, parece que no está utilizando la fuente, sino el nombre de archivo, que no parece estar definido en ninguna parte del fragmento de código que publicó. ¿Quiso usar la fuente?

Obtendrá este error si tiene un : Como parte del camino en Source. Puede que tengas una por supuesto como en c:\ pero c:\Test:Folder\Text.txt te dará el error The filename, directory name, or volume label syntax is incorrect.

Edición 1Otro personaje inválido es ?. No sé si usa Unicode en Delphi o si su fuente de datos es unicode, pero a veces los caracteres Unicode desconocidos se traducen a ?.

Edición 2Los espacios antes de la letra de la unidad en la fuente también le darán el mismo error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top