Ir para conteúdo
Fórum Script Brasil
  • 0

Duas Duvidas Numa


rodfraga

Pergunta

Fala galera... Eu tenho duas duvidas numa tacada só. rolleyes.gif

Primeiro. Como eu faço para que meu programa possa abrir outros arquivos? Exemplo, que ele possa abrir todos os arquivos de extensao .blc? E que essa extensao seja caracterisitca do meu programa?

E outra, eu to fazendo uma linguagem de programação(par apoder aprender e tetnar continuar a XScript já que o Graymalkin deixou), e estou fazendo uma parte que o Graymalkin disse ser facil mas eu to passando por mais lençois. dry.gif

É a parte de guardar variáveis

Vou por todo o código relacionado a essa parte aqui ok? Eu não acho erro, alias, nem o VB, porem nada é executado.

Se alguém puder ajudar...

'No botao que compila e executa o meu teste
Dim sintax As New BMain
Private Sub ver_Click()
Dim lines() As String
lines() = Split(Text1.Text, vbCrLf)
For i = LBound(lines) To UBound(lines)
sintax.compilador (lines(i))
Next i
End Sub

'na classe BMain:

Private Type VarType
nome As String
valor As Variant
End Type
Public Function interpretador(linha As String)
On Error Resume Next
'Para variáveis:
Dim stringa As String, pdivVars() As String
Dim listName As Object
If Left(linha, 2) = "V#" Or Left(linha, 2) = "v#" Then
stringa = Split(linha, "#")(1)
pdivVars() = Split(stringa, ", ")
Call guarda_vars(pdivVars())
End If
If Left(linha, 7) = "showVar" Then
stringa = Split(linha, "=")(1)
listName = stringa
Call mostrar(listName)
End If
End Function

Public Function guarda_vars(nome() As String)
On Error Resume Next
Dim unk
unk = UBound(var)
If Err.Number = 9 Then
For i = LBound(nome) To UBound(nome)
var(i).nome = nome(i)
Next i
Else
For i = LBound(nome) To UBound(nome)
n = UBound(var) + 1
ReDim Preserve var(n)
var(n).nome = nome(i)
Next i
End If
End Function


Public Function mostrar(list As Object)
For i = LBound(var) To UBound(var)
list.AddItem (var(i).nome)
Next i
End Function
Eu criei a funação mostrar para poder ver se o trocinho tava guardando as variaveis direitinho. Eu digitei no txt de codigo:
v#teste, teste1
showVar=List1

então, não faz nada esse codigo "todo" dry.gif

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Já que você apenas quer a dica, o erro está na seguinte linha:

If Left(linha, Len(var(i).nome)) = var(i).nome And Mid(linha, Len(var(i).nome), Len(var(i).nome) + 1) = "=" Then

Qual o tamanho (comprimento, quantidade de caracteres) em "="?

E, cara, indenta (ou endenta, ou identa, já que não há um consenso sobre a palavra) esse código.

Abraços,

Graymalkin

Cara, eu sei que era só a dica... Mas nesse ngócio ai eu me compliquei(QI baixo é fogo...)

Eu botei como sendo var(i).nome + 0(o que na minha opiniao não poderia ser) e sendo var(i).nome + 2, porem o mesmo acontece que antes... Será que eu preciso de aulas para contar caracteres? dry.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Isso é mais simples do que você está imaginando. O terceiro parâmetro da função Mid() é a quantidade de caracteres que deverão ser retornados (e não a posição final dos mesmos). Por isso, seria apenas:

If Left(linha, Len(var(i).nome)) = var(i).nome And Mid(linha, Len(var(i).nome)+1, 1) = "=" Then

Além disso, tem um +1 no Len(var(i).nome) porque você quer o próximo caracter após o nome.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...