Я использую Delphi 2010, и моя программа хочет получить временный путь к системе. Я использую TPath.GetTempPath, и все работает нормально ... по крайней мере, для меня и моих коллег. Но на некоторых клиентских машинах этот метод возвращает обрезанный путь, который (конечно) не существует. Я обнаружил, что проблема, похоже, является результатом основного вызова GetLongPathName ().
Полный код выглядит так:
[...]
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;
[...]
Это происходит только в некоторых системах, и я не знаю почему. Я нашел неприятный обходной путь для этого, но я хотел бы знать, что здесь происходит.
Кто-нибудь может пролить свет на это?