Ir para conteúdo
Fórum Script Brasil

Grandirus

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Sobre Grandirus

Grandirus's Achievements

0

Reputação

  1. https://drive.google.com/file/d/0B-QVADfuBCIUaks3NFdhNktPLVU/view
  2. 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.
  3. 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.
  4. 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.
  5. 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...