ARGUMENTO
Olá...
Bom... eu tenho um aplicativo (um Chat), que eu gostaria de trabalhar com comandos e argumentos.... algo do tipo...
se a pessoa digitase "/quit Mensagem" eu teria que interpretar a primeira palavra após a barra (/quit) e em seguida saber qntos argumentos é permitido para aquele comando e interpratálo-o (No caso do /quit, so teria o argumento Mensagem)
Vcs me entenderam?!?!
Isso trabalhando com banco de dados!!!
Bom... eu tenho um aplicativo (um Chat), que eu gostaria de trabalhar com comandos e argumentos.... algo do tipo...
se a pessoa digitase "/quit Mensagem" eu teria que interpretar a primeira palavra após a barra (/quit) e em seguida saber qntos argumentos é permitido para aquele comando e interpratálo-o (No caso do /quit, so teria o argumento Mensagem)
Vcs me entenderam?!?!
Isso trabalhando com banco de dados!!!
voce pode usar uma combinacao de select case e split...
vc vai receber um comando no formato "/CMD ARG1 ARG2 ARG3"
certo?
entao como sugestao - remove a barra
mid$(comando,2)
quebra o comando em um array
SPLIT
faz um select com o primeiro valor do array
select case ucase(ArrayComando(0))
case "QUIT"
'sabe que são 3 argumentos por exemplo - entao verifica se comando veio completo
if ubound(ArrayComando)=3 then
chama funcao quit e passa argumentos
FuncaoQuit ArrayComando(1), ArrayComando(2), ArrayComando(3)
endif
end select
vc vai receber um comando no formato "/CMD ARG1 ARG2 ARG3"
certo?
entao como sugestao - remove a barra
mid$(comando,2)
quebra o comando em um array
SPLIT
faz um select com o primeiro valor do array
select case ucase(ArrayComando(0))
case "QUIT"
'sabe que são 3 argumentos por exemplo - entao verifica se comando veio completo
if ubound(ArrayComando)=3 then
chama funcao quit e passa argumentos
FuncaoQuit ArrayComando(1), ArrayComando(2), ArrayComando(3)
endif
end select
Dim MeuArry() As String
MeuArray = Split(MeuTexto, CaracterQueSepara)
se vai separar por espacao - CaractarQueSepara = " "
exatamente o que voce quer dizer com banco de dados?
dependendo de como for, voce pode usar AddressOf e usar um array publico para armazenar argumentos - mas nao eh nada recomendado...
o que voce guarda em seu banco de dados e como voce pretende usar isto?
MeuArray = Split(MeuTexto, CaracterQueSepara)
se vai separar por espacao - CaractarQueSepara = " "
exatamente o que voce quer dizer com banco de dados?
dependendo de como for, voce pode usar AddressOf e usar um array publico para armazenar argumentos - mas nao eh nada recomendado...
o que voce guarda em seu banco de dados e como voce pretende usar isto?
existe uma forma de fazer que torna o trabalho menos complicado...
voce cria "plug in's"
por exemplo - precisa mandar uma mensagem - existe um envMsg.exe em algum lugar
precisa enviar um arquivo - existe um envArquivo.exe
e assim por diante...
voce faz a pesquisa em funcao do comando (usando o split para pegar os argumentos e comando)
pega o caminho do executavel que executa este comando (mais uma coluna em seu banco de dados)
passa os argumentos no shell
shell EXEDeTarefa & Argumentos
em cada executavel voce recupera os argumentos usando
Command$
voce cria "plug in's"
por exemplo - precisa mandar uma mensagem - existe um envMsg.exe em algum lugar
precisa enviar um arquivo - existe um envArquivo.exe
e assim por diante...
voce faz a pesquisa em funcao do comando (usando o split para pegar os argumentos e comando)
pega o caminho do executavel que executa este comando (mais uma coluna em seu banco de dados)
passa os argumentos no shell
shell EXEDeTarefa & Argumentos
em cada executavel voce recupera os argumentos usando
Command$
cria uma coluna com:
IDComando
NomeComando
NumeroArgumentos (e se for o caso tipo de argumentos)
na hora que receber o comando faca uma pesquisa assim...
select IDComando from Tabela Where Comando='" & Array(0) & "' and NumeroArgumentos=" & ubound(array)-1 & ";"
se retornar IDComando, o comando é válido...
com o IDComando voce faz um select case
select case IDComando
case 1
'quit
case 2
'pisca
case 3
'bold
end select
preferencialmente use os numeros associados de um Enum
Public Enum IDComandos
eQuit = 1
ePisca = 2
eBold = 3
end Enum
e no select case voce usa
case eQuit
case ePisca
case eBold
para poder alterar os valores com seguranca depois
IDComando
NomeComando
NumeroArgumentos (e se for o caso tipo de argumentos)
na hora que receber o comando faca uma pesquisa assim...
select IDComando from Tabela Where Comando='" & Array(0) & "' and NumeroArgumentos=" & ubound(array)-1 & ";"
se retornar IDComando, o comando é válido...
com o IDComando voce faz um select case
select case IDComando
case 1
'quit
case 2
'pisca
case 3
'bold
end select
preferencialmente use os numeros associados de um Enum
Public Enum IDComandos
eQuit = 1
ePisca = 2
eBold = 3
end Enum
e no select case voce usa
case eQuit
case ePisca
case eBold
para poder alterar os valores com seguranca depois
seria - entao de preferencia por select case e nao chamadas pelo nome do comando
Tópico encerrado , respostas não são mais permitidas