「STF:宋体」に等しい WideString の ExtractFileName を使用しています。結果は「??」です。
ExtractFileName は unicode をうまく処理していないようです。
ユニコードに相当する方法はありますか?
編集:
これは私が使用する回線です
NameStr := ExtractFileName(Name);
タイプは次のとおりです。
NameStr:String;
Name:PWideChar
「STF:宋体」に等しい WideString の ExtractFileName を使用しています。結果は「??」です。
ExtractFileName は unicode をうまく処理していないようです。
ユニコードに相当する方法はありますか?
編集:
これは私が使用する回線です
NameStr := ExtractFileName(Name);
タイプは次のとおりです。
NameStr:String;
Name:PWideChar
TNTTntSysUtils.WideExtractFileName
からも使えます。
Unicode をサポートしていない古いバージョンの Delphi を使用しているようです。解決策は、Delphi をアップグレードすることです。
次のように、家庭で調理されたバージョンの を使用できますExtractFileName
。
function ExtractFileNameW(FullPath:WideString):WideString;
var i,pos:Integer;
begin
// Find the last path separator
pos := -1;
for i:=Length(FullPath) downto 1 do
if (FullPath[i] = '/') or (FullPath[i] = '\') then
begin
pos := i;
Break;
end;
if pos = -1 then
Result := FullPath
else
begin
Result := '';
SetLength(Result, Length(FullPath) - pos);
System.Move(FullPath[pos+1], Result[1], (Length(FullPath) - pos) * SizeOf(WideChar));
end;
end;
...しかし、本当に Unicode 文字を扱う必要がある場合は、XE にアップグレードする必要があります。それは本当に多くの違いを生みます。