日記書くネタが無いので。ロングファイルネームをショートファイルネームにするのは、ExtractShortPathName()で一発なんですが、逆が無かったりする。で、書くわけさ。
function ExtractLongPathName(FileName: TFileName): String; var sr : TSearchRec; begin Result := ''; FileName := ExpandFileName(FileName); while LastDelimiter('\', FileName) >= 3 do begin if FindFirst(FileName, faAnyFile, sr) = 0 then begin try Result := '\' + sr.Name + Result; finally FindClose(sr); end; end else begin Result := '\' + ExtractFileName(FileName) + Result; end; FileName := ExtractFilePath(FileName); SetLength(FileName, Length(FileName) - 1); end; Result := FileName + Result; end;
実は、あんまり使い道ないんですが、ショートファイルネームかロングファイルネームのどちらが取得されるかわからない場合、とりあえずこの関数に通せば、ロングファイルネームで考えられる・・・と。どんな場合やねん。
友人曰く、僕のDelphiのコードは、「begin~end書きすぎ」だそうだ。なんとなく、挟んでないと落ち着かないんだよ。