ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2017年11月21日(火) 13:25

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 1 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2008年8月14日(木) 16:35 
[hide=はじめに]前にも同じようなものがありましたが、少し違うのであえて載せます。[/hide]
コマンドラインの文字列をスペースで区切ります。
""の中のスペースは無視します。
[hide=全てひとまとめ版]
コード:
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
[/hide]
[hide=スイッチとそれ以外を分ける版]
コード:
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
[/hide]
[hide=説明]
書式
全てひとまとめ版:cmdbun(cmd,sepalator)
スイッチとそれ以外を分ける版:cmdbunpathsw(file,switch,cmd,sepalator)
共通事項
cmd(String型):コマンドライン文字列を指定する。
sepalator(String型):区切り文字列を指定する。
cmdbunについて
戻り値(String型):コマンドラインを区切った文字列
cmdbunpathswについて
file(ポインタ参照String型):分割されたファイル名が入る
switch(ポインタ参照String型):分割されたスイッチが入る
戻り値:なし[/hide]
[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
[/hide]
最後にひとつ:hideばっかりですみません...。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 1 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke