Estoy usando Delphi 2010 y mi programa quiere obtener la ruta temporal del sistema. Estoy usando TPath.GetTempPath y todo está funcionando bien ... al menos para mí y mis compañeros de trabajo. Pero en algunas máquinas de clientes, este método devuelve una ruta recortada que (por supuesto) no existe. Descubrí que el problema parece ser el resultado de una llamada subyacente a GetLongPathName().Delphi TPath.GetTempPath resultado se recorta
El código completo es el siguiente:
[...]
var
TmpDir : String;
Len : Integer;
begin
[... Call to GetTempPath succeeds and we have a valid temp directory in short "~" notation in var TmpDir ...]
Len := GetLongPathName(PChar(TmpDir), nil, 0); // Len = 37
SetLength(TmpDir, Len - 1); // We want to set the len of TmpDir to 37 - 1.
GetLongPathName(PChar(TmpDir), PChar(TmpDir), Len); // Only 32 (instead of 36) characters are copied - so we have a cropped path - But why?!
end;
[...]
Esto sólo ocurre en algunos sistemas y no sé qué. Encontré una solución desagradable para esto, pero me gustaría saber qué está pasando aquí.
¿Alguien puede aclarar esto?
¿Puede darnos ejemplos de los nombres de ruta correctos (esperados) y malos (reales)? ¿Podría ser un problema de codificación Unicode? –
Pensamos que también en primer lugar, pero los nombres de las rutas no contienen ningún carácter que pueda causar problemas con las conversiones Unicode. El nombre de ruta del resultado de GetLongPathName solo falta los últimos 4 caracteres ("emp \" de "Temp \") - todos los demás caracteres son válidos. – Patrick
Suena como http://qc.embarcadero.com/wc/qcmain.aspx?d=92006 –