全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:937
推到 Plurk!
推到 Facebook!

如何判断一个字符串是否是合法的档案(File)名称?

尚未結案
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-13 10:04:01 IP:218.2.xxx.xxx 未訂閱
也就是该字符串中不能够包含/\?*:<>|"
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-13 17:41:57 IP:211.76.xxx.xxx 未訂閱
引言: 也就是该字符串中不能够包含/\?*:<>|"
方法一 : 利用 StrScan 這類的字串函式,過濾出不合法字串 ... 方法二 : 利用 FileCreate 嘗試建立一個空的 File .. 利用傳回值為正值 => 合法 => 刪除建立的空檔 .. 反之則不合法.. ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-14 12:49:16 IP:202.39.xxx.xxx 未訂閱
function CheckValidFileName(AFileName: string): Boolean;
var
  Handle: THandle;
begin
  Result := True;
  if FileExists(AFileName) then begin
    ShowMessage(AFileName   ' 已存在!');
    Exit;
  end;      Handle := CreateFile(PChar(AFileName),
                       GENERIC_READ or GENERIC_WRITE,
                       0,
                       nil,
                       CREATE_NEW,
                       0,
                       0);
  if Handle <> INVALID_HANDLE_VALUE then
    CloseHandle(Handle)
  else begin
    RaiseLastWin32Error;
    Result := False;
  end;
end;
--- 屬於那自己生命的歌 不管是什麼顏色 發表人 - hagar 於 2004/03/14 12:51:08
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-15 08:14:14 IP:218.104.xxx.xxx 未訂閱
用不着以创建的方式判断吧,只需判断字符串中有无出现这九个字符 如何做?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-15 08:19:57 IP:202.39.xxx.xxx 未訂閱
http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&th=b843665603de0fc0&rnum=1
function ContainsOnlyValidFilenameChars (const s: string) : boolean;
const 
  cValidFilenameChars: tSysCharSet = ['A'..'Z', '0'..'9', 'a'..'z', . . .];
var
  i : integer;
begin
  i := Length (s);
  while (i > 0) and (s [i] in cValidFilenameChars) do
        dec (i);
  result := (s <> '') and (i < 1);
end;
--- 屬於那自己生命的歌 不管是什麼顏色
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-15 10:26:43 IP:211.23.xxx.xxx 未訂閱
試試這個是不是你要的     
procedure TForm1.Button1Click(Sender: TObject);
const
  sInvalid='/\?*:<>|"' ;
var
  iRet : integer ;
  sFile: string ;
begin
  sFile:=edit1.text ;
  iRet:=LastDelimiter(sInvalid,sFile) ;
  if iRet>0 then
    begin
    Caption:=format('invalid at %d',[iRet]) ;
    end
  else
    Caption:='Vaild file name' ;
end;
 
...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-05-12 7:48:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!