初歩的な質問ですみません
MatchesMask でファイル名の照合をしていますが先頭に[資料] とか入ってると「〜は正しくないマスク文字です.」とエラーになります
if Masks.MatchesMask('[資料]a.txt','[資料]*') then
Caption:='ok' else Caption:='no';
エスケープシーケンス?するにはどうしたらよいのでしょう?
``の様に[[ したり""でくくったりしましたがダメでした
とりあえず動かしたいのはDelphi5です
こんにちは。
[] は文字セット (スキャンセット) の為に利用されているので、
取得したファイル名の [] をファイル名に使えない文字...例えば <> とかに置換してみてはいかがでしょうか?
function EscapeScanset(s: string): string;
begin
result := StringReplace(s , '[', '<', [rfReplaceAll]);
result := StringReplace(result, ']', '>', [rfReplaceAll]);
end;
if Masks.MatchesMask(EscapeScanset('[資料]a.txt'), EscapeScanset('[資料]*')) then
Caption:='ok' else Caption:='no';
[Masks.MatchesMask]
http://docwiki.embarcadero.com/Libraries/ja/System.Masks.MatchesMask
なるほど、比較する時だけ置換すればいいのですね
頭が固くなっていたようです
ありがとうございました
すみませんチェック忘れです
ツイート | ![]() |