Ir para conteúdo
Fórum Script Brasil

Grandirus

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Posts postados por Grandirus

  1. Bem, não entendi muito bem para qual finalidade, mas posso ajudar um pouco eu acho.

    Fiz conforme o seu código, e dei uma melhorada, e também criei o módulo.

    Ficaria mais ou menos assim:

    Módulo:

    Option Explicit
    
    Public ParticulaAtona As New Collection
    Public Particula As New Collection
    
    Public Sub PopParticulaAtona()
    ParticulaAtona.Add "Da"
    ParticulaAtona.Add "De"
    ParticulaAtona.Add "Do"
    ParticulaAtona.Add "No"
    ParticulaAtona.Add "A"
    ParticulaAtona.Add "E"
    ParticulaAtona.Add "I"
    ParticulaAtona.Add "O"
    ParticulaAtona.Add "U"
    End Sub
    
    Public Sub PopParticula()
    Particula.Add "da"
    Particula.Add "de"
    Particula.Add "do"
    Particula.Add "no"
    Particula.Add "a"
    Particula.Add "e"
    Particula.Add "i"
    Particula.Add "o"
    Particula.Add "u"
    End Sub

    E a Form ficaria assim:

    Option Explicit
    
    Dim Altera As String
    Dim i As Integer
    
    Private Sub Form_Load()
    
    PopParticulaAtona
    PopParticula
    
    End Sub
    
    Private Sub txtDescProdCP_Change()
            Altera = txtDescProdCP.Text
            Altera = StrConv(Altera, vbProperCase)
        For i = 1 To 9
            Altera = Replace(Altera, " " & ParticulaAtona.Item(i) & " ", " " & Particula.Item(i) & " ")
        Next i
            txtDescProdCP.Text = Altera
    End Sub

    Criei apenas a form com o textbox conforme imaginei ai no seu código.

    O resultado veio como, ao digitar o texto, ele mantem sempre a primeira letra maiúscula e o texto fica invertido.

    Bem, para o módulo funcionar, onde fica o Form_Load, tem que ter o nome deles, que no caso são PopParticulaAtona e PopParticula.

    Dai, onde tem o ParticulaAtona.Item(i), ele ira pegar o item referente a posição numérica, que no caso seria entre 1 e 9.

    Enfim, espero ter ajudado.

  2. Olá.
    Queria compartilhar mais uma coisa que eu me deparei, pesquisei, e resolvi.

    ' Chaz Current HP
    Get #FF, &H11986 + 1, HP(1)
    Get #FF, &H11987 + 1, HP(2)
    
    Dim CHPString As String
    CHPString = "&H" & Hex(HP(1)) & Hex(HP(2))
    txtCurHP(Memb).Text = Val(CHPString)

    Nesta parte do código, ele pega os valores de HP(1) e HP(2), e faz a conversão para exibir na caixa de texto.

    Se o valor obtido de HP(1) fosse 1, e HP(2) fosse 0, ao converter para Hexadecimal, DEVERIA ser 01 00, pois ele gera primeiro uma string que equivale a sequencia dos dois endereços, tipo "&H0100", que convertido equivale a 256. 256 seria exibido na caixa de texto.

    PORÉM, devido ao um erro (crio eu) de formula interna do VB6 (Hex), ao se deparar com valores de dois dígitos, entre 00 e 0F (0 e 15), ele "comia" um zero, e, no caso que exemplifiquei, ao invés de "&H0100", ficaria "&H10", e mudaria de 256 (valor correto) para 16 (valor errado devido a remoção do "zero").

    Eu pesquisei e encontrei uma solução que faz com que tenha sempre dois dígitos quando forem convertidos (uma linha de códigos Hexadecimal de 4 bytes seria &H00000000, mas com a conversão do VB6, teríamos somente 2 bytes e seria &H0000).

    Public Function HexByte2Char(ByVal Value As Byte) As String
      ' Return a byte value as a two-digit hex string.
      HexByte2Char = IIf(Value < &H10, "0", "") & Hex$(Value)
    End Function

    Esta é a função que me permitiu corrigir este pequeno defeito do VB6.

    Sendo assim, ficaria:

    ' Chaz Current HP
    Get #FF, &H11986 + 1, HP(1)
    Get #FF, &H11987 + 1, HP(2)
    
    Dim CHPString As String
    CHPString = "&H" & HexByte2Char(HP(1)) & HexByte2Char(HP(2))
    txtCurHP(Memb).Text = Val(CHPString)

    Se alguém não entendeu, ou entendeu porém achou inútil, só responder aqui.

  3. Bem, já consegui a resposta e vim compartilhar. Meu irmão, que é programador, me ajudou =)

    Public Sub Save4bytes(offset, value, Location)
    ' -----------------------------------------------------------------------------
    ' Function called to save 3 Bytes, i.e. Currency
    ' -----------------------------------------------------------------------------
    
        Dim sval As Byte
        Dim A, B, C, D, E
        
        value = (value Mod &H10000000)
        
        A = Hex(value)
        If Len(A) = 1 Then A = "0000000" & A
        If Len(A) = 2 Then A = "000000" & A
        If Len(A) = 3 Then A = "00000" & A
        If Len(A) = 4 Then A = "0000" & A
        If Len(A) = 5 Then A = "000" & A
        If Len(A) = 6 Then A = "00" & A
        If Len(A) = 7 Then A = "0" & A
        
        B = ConvertHex(Left(A, 2))
        C = ConvertHex(Right(Left(A, 4), 2))
        D = ConvertHex(Left(Right(A, 4), 2))
        E = ConvertHex(Right(A, 2))
        
        Put #1, offset, CByte(B)
        Put #1, offset - -1, CByte(C)
        Put #1, offset - -2, CByte(D)
        Put #1, offset - -3, CByte(E)
        
    End Sub

    Está ai, caso alguém precise.

  4. Olá, boa tarde.

    Tenho aqui uma dúvida de como criar uma função que grava 4 bytes (no caso, seriam 4 endereços hexadecimais).

    Eu já possuo as "formulas" que gravam 2 e 3 bytes, porém, um dos valores necessita salvar 4 bytes.

    Public Sub Save2bytes(offset, value, Location)
    ' -----------------------------------------------------------------------------
    ' Function called to save 2 Bytes, i.e. HP/MP
    ' -----------------------------------------------------------------------------
        Dim sval As Byte
        Dim A, B, C
        
        value = (value Mod &H10000)
        
        A = Hex(value)
        If Len(A) = 1 Then A = "000" & A
        If Len(A) = 2 Then A = "00" & A
        If Len(A) = 3 Then A = "0" & A
        
        B = ConvertHex(Left(A, 2))
        C = ConvertHex(Right(A, 2))
        
        Put #1, offset, CByte(C)
        Put #1, offset - -1, CByte(B)
        
    End Sub
    Public Sub Save3bytes(offset, value, Location)
    ' -----------------------------------------------------------------------------
    ' Function called to save 3 Bytes, i.e. Experience/Currency
    ' -----------------------------------------------------------------------------
    
        Dim sval As Byte
        Dim A, B, C, D
        
        value = (value Mod &H1000000)
        
        A = Hex(value)
        If Len(A) = 1 Then A = "00000" & A
        If Len(A) = 2 Then A = "0000" & A
        If Len(A) = 3 Then A = "000" & A
        If Len(A) = 4 Then A = "00" & A
        If Len(A) = 5 Then A = "0" & A
        
        B = ConvertHex(Left(A, 2))
        C = ConvertHex(Right(A, 4)) \ 256
        D = ConvertHex(Right(A, 2))
        
        Put #1, offset, CByte(D)
        Put #1, offset - -1, CByte(C)
        Put #1, offset - -2, CByte(B)
        
    End Sub

    Preciso saber como, baseado nessas duas funções, criar uma para 4 bytes.

    Desde já agradeço.

×
×
  • Criar Novo...