Sto usando Delphi 2010 e il mio programma vuole ottenere il percorso temp del sistema. Sto usando TPath.GetTempPath e tutto sta funzionando bene ... almeno per me e per i miei colleghi. Ma su alcune macchine clienti questo metodo restituisce un percorso ritagliato che (ovviamente) non esiste. Ho scoperto che il problema sembra essere il risultato della chiamata sottostante a GetLongPathName().Delphi Il risultato TPath.GetTempPath è ritagliato
Il codice completo è simile al seguente:
[...]
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;
[...]
Ciò accade soltanto su alcuni sistemi e non so perché. Ho trovato una brutta soluzione per questo, ma mi piacerebbe sapere cosa sta succedendo qui.
Qualcuno può far luce su questo?
Puoi fornirci esempi dei nomi dei percorsi corretti (previsti) e negativi (effettivi)? Potrebbe essere un problema Unicode o di codifica? –
Abbiamo pensato anche al primo posto, ma i nomi dei percorsi non contengono caratteri che potrebbero causare problemi con le conversioni Unicode. Il nome del percorso risultato di GetLongPathName manca solo degli ultimi 4 caratteri ("emp \" di "Temp \") - tutti gli altri caratteri sono validi. – Patrick
Suoni come http://qc.embarcadero.com/wc/qcmain.aspx?d=92006 –