特定の文字を調べるには?

解決


たろー  2004-05-01 06:23:31  No: 8803

質問なのですが調べて見ましたがよく分からず質問させて頂きます
例えばEdit1.Textの中にファイル名で使用できない;:<>などがあった場合保存させずに中止させる方法が良く分かりません、

LastDelimiter関数を使えば出来ると過去ログにありましたが使用方法がいまいちよく分かりません、
ご存知の方がいましたら宜しくお願いします。


るるとん@K  2004-05-01 07:07:51  No: 8804

ほとんどの保存処理では、
エラーが有った場合、Falseをかえしますので、
それを使えるなら利用した方が良いです。
=例=(Memo1.LinesをEdit1.Textに保存
if not Memo1.Lines.SaveToFile(Edit1.Text) then
begin
ShowMessage('保存できませんでした')
end;


Q  2004-05-01 07:43:29  No: 8805

procedure TForm1.Button1Click(Sender: TObject);
const
    Delimiters='\/:*?"<>|'; //ファイル名に使えない文字?
var
    L: integer;
begin
    L:= LastDelimiter(Delimiters, Edit1.Text);
    if L>0 then
      ShowMessage(IntToStr(L)+'Byte目の文字がNGです') else
      ShowMessage('OK');
end;


たろー  2004-05-01 08:39:02  No: 8806

るるとん@Kさん、Qさん、ありがとうございます
Qさんのをそのまま使って見た所できました(^^)
フォルダを作る時にも応用できそうです
またるるとん@Kさんのアドバイスも勉強になりこれも応用できそうです
この度は本当にありがとうございました


Mark  2004-05-02 04:01:20  No: 8807

そもそも入力できないようにするとかも

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  (* ファイル名に使えない文字は無効化。 *)
  if Key in ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|'] then
  begin
    Key := #0;
    Beep;
  end;
end;


たろー  2004-05-05 08:38:32  No: 8808

なるほど・・そういう手段もあるのですね
Mark さんありがとうございます
さっそく上記のも使ってみようと思います、ありがとうございました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加