ab.com コミュニティ https://www.activebasic.com/forum/ |
|
コマンドラインの分割 https://www.activebasic.com/forum/viewtopic.php?t=2457 |
ページ 1 / 1 |
作成者: | 三毛CAT [ 2008年8月14日(木) 16:35 ] |
記事の件名: | コマンドラインの分割 |
はじめに [ここをクリックすると内容が表示されます]
コマンドラインの文字列をスペースで区切ります。前にも同じようなものがありましたが、少し違うのであえて載せます。 ""の中のスペースは無視します。 全てひとまとめ版 [ここをクリックすると内容が表示されます]
コード: Function cmdbun(cmd As String,sepalator As String) As String Dim command As String Dim where As DWord command=cmd cmdbun="" While Len(command)>0 if Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,1,where-1) command=Mid$(command,where+1) End If cmdbun=cmdbun+sepalator Wend cmdbun=Left$(cmdbun,Len(cmdbun)-Len(sepalator)) End Function スイッチとそれ以外を分ける版 [ここをクリックすると内容が表示されます]
コード: Sub cmdbunpathsw(ByRef file As String,ByRef switch As String,cmd As String,sepalator As String) Dim command As String Dim where As DWord Dim horyuu As String command=cmd file="" switch="" While Len(command)>0 If Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,1,where-1) command=Mid$(command,where+1) End If If Asc(horyuu)=Asc("/") or Asc(horyuu)=Asc("-") Then switch=switch+Mid$(horyuu,2)+sepalator Else file=file+horyuu+sepalator End If Wend if Len(file)>0 Then file=Left$(file,Len(file)-Len(sepalator)) if Len(switch)>0 Then switch=Left$(switch,Len(switch)-Len(sepalator)) End Sub 説明 [ここをクリックすると内容が表示されます]
書式 全てひとまとめ版:cmdbun(cmd,sepalator) スイッチとそれ以外を分ける版:cmdbunpathsw(file,switch,cmd,sepalator) 共通事項 cmd(String型):コマンドライン文字列を指定する。 sepalator(String型):区切り文字列を指定する。 cmdbunについて 戻り値(String型):コマンドラインを区切った文字列 cmdbunpathswについて file(ポインタ参照String型):分割されたファイル名が入る switch(ポインタ参照String型):分割されたスイッチが入る 戻り値:なし サンプルプログラム [ここをクリックすると内容が表示されます]
最後にひとつ:hideばっかりですみません...。
コード: #N88BASIC Dim cmd As String Dim file As String Dim switch As String cmd=MakeStr(GetCommandLine()) file=cmdbun(cmd,Ex"\r\n") Print "-------------全て-------------" Print file cmdbunpathsw(file,switch,cmd,Ex"\r\n") Print "---------ファイルのみ---------" Print file Print "---------スイッチのみ---------" Print switch Print "------------------------------" Function cmdbun(cmd As String,sepalator As String) As String Dim command As String Dim where As DWord command=cmd cmdbun="" While Len(command)>0 if Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") if where=0 Then where=Len(command)+1 cmdbun=cmdbun+Mid$(command,1,where-1) command=Mid$(command,where+1) End If cmdbun=cmdbun+sepalator Wend cmdbun=Left$(cmdbun,Len(cmdbun)-Len(sepalator)) End Function Sub cmdbunpathsw(ByRef file As String,ByRef switch As String,cmd As String,sepalator As String) Dim command As String Dim where As DWord Dim horyuu As String command=cmd file="" switch="" While Len(command)>0 If Asc(command)=Asc(Ex"\q") Then where=InStr(2,command,Ex"\q") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,2,where-2) command=Mid$(command,where+2) Else where=InStr(1,command," ") If where=0 Then where=Len(command)+1 horyuu=Mid$(command,1,where-1) command=Mid$(command,where+1) End If If Asc(horyuu)=Asc("/") or Asc(horyuu)=Asc("-") Then switch=switch+Mid$(horyuu,2)+sepalator Else file=file+horyuu+sepalator End If Wend if Len(file)>0 Then file=Left$(file,Len(file)-Len(sepalator)) if Len(switch)>0 Then switch=Left$(switch,Len(switch)-Len(sepalator)) End Sub |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |