Ir para conteúdo
Fórum Script Brasil

Andersonjb

Veteranos
  • Total de itens

    580
  • Registro em

  • Última visita

Posts postados por Andersonjb

  1. Nossa, nunca imaginaria que isso estivesse acontecendo, :blink: . Pra mim, o caracter só possuia 1 byte, nada mais que isso.

    Bem, como posso escrever caracteres de apenas 1 byte no arquivo, o correto seria fazer isso, certo?

    arquivo.Write(b(0))

    Mas o arquivo continua não funcionando. Eu estou fazendo certo?

  2. Assim:

    arquivo.Seek(x - 1, IO.SeekOrigin.Begin)
    Dim l As Char = caracteres(j)
    arquivo.Write(l)

    Simplesmente assim, movo o arquivo pra posição que eu quero, e escrevo, retirando o caracter de uma matriz de caracteres.

  3. Não, Gray, eu não pego os bytes do arquivo porque eu vo manipular coisa grande, arquivos de até 700 Megas. Eu simplesmente to criando a Stream e girando o arquivo, e substituindo os dados a partir de um ponto determinado. Agora, eu realmente acho que tem essa história dos dois bytes por causa disso:

    Você pode verificar se este caracter que você está escrevendo tem apenas um byte olhando se na posição posterior a qual ele é inserido permanece o mesmo byte que estava antes.

    E não permance, sempre modifica.

    Alguma opnião?

  4. Eu editei o Post acima Gray, mais a unica coisa que eu faço demais é comparar o caracter que eu quero inserir com uma lista de caracteres ( na matriz caracteres(j) ), e se estiver na lista, ele insere da maneira como editei acima. Alguma cagada?

  5. E ai Gray, beleza? Bem, estou tendo mais problemas. :(

    Bem, como você sabe, estou mechendo com arquivos binários, e no arquivo não pode ser implementada ou retirada nenhuma informação. Estou lendo o arquivo da seguinte maneira:

            Dim arquivo1 As New IO.FileStream(nomerom, IO.FileMode.Open, IO.FileAccess.ReadWrite)
            Dim arquivo As New IO.BinaryWriter(arquivo1, System.Text.Encoding.Default)
    Mais acontece que o arquivo está sendo comropido, na hora de eu inserir os dados. Bem, para inserir o dado, eu levo o arquivo até a posição que eu quero:
    arquivo.Seek(x, IO.SeekOrigin.Begin)
    Depois, adiciono o dado:
                                Dim l As Char = caracteres(j)
                                arquivo.Write(l)

    Bem, como pode ver eu tenho uma matriz, que eu pego de um indice, adiciono no arquivo, e mando gravar. Mas acontece que o arquivo se corrompe depois da gravação. O que eu fiz de errado?

  6. Não, ela é um pouco popular sim, ela foi criada em 1977! Antiga, né? Cheguei a achar textos sobre ela mais nenhum método de como usa-la e tals... Olha ai o que eu achei:

    Lempel-Ziv e Variantes

    Abraham Lempel e Jacob Ziv (Lempel-Ziv ou LZ) foram os criadores desse popular tipo de compressão, em 1977 (77!). A compressão Lempel-Ziv é denominada "compresão de texto utiliando um dicionário", onde o texto seria o código a ser comprimido e o dicionário é o que fará o texto ser comprimido e descomprimido. O formato básico da utilização deste dicionário seria lembrar onde está o texto repetido e queüantos caracteres do mesmo jeito que visto mais a frente, em um arquivo, sendo o dicionário inicialmente implantado como um endereço que aponta para outro anterior do arquivo. Complicado?

    Vamos verificar, no nosso arquivo A.BIN temos esta determinada seqüência de dados no endereço 0x00 (convenientemente escolhido): "AAAAAAAAAAAAA", estes dados são armazenados em um BUFFER (no nosso querido PC, a memória RAM como exemplo) e são comparados até se achar outro texto igüal. A partir do endereço 0xFF, temos o seguinte texto: "AAAAAAAAAAAAA", opa! É o mesmo texto, então aí começa a compressão: o texto "AAAAAAAAAAAAA" poderia ser substituído por "0013", onde "00" seria o endereço onde o texto apareceu antes e "13" o tamanho do texto repetido em "00", nesse caso, o caractere "A"! Só lembrando mais uma vez, "13" é o numero de caracteres para contar a partir do endereço "00", e não o número de vezes repetido, para não confundir com RLE!

    Essa é a idéia básica! Veremos agora um exemplo com seqüências complexas antes de entrarmos no dicionário.

    E alem dela, ainda tem suas variantes...

  7. Bem, pro pessoal que as vezes acompanha o tópico ai, vai saber, né, eu vou postar como eu consegui fazer:

    arquivo.BaseStream.Seek(x, IO.SeekOrigin.Begin)
    Onde "x" é a variavel da posição do arquivo. Na verdade, o titio Gray que me ensinou. :P E gray, eu tenho outra duvida: bem, eu estou girando o arquivo em um For usando isto que você me passou, só que na hora de declarar a Stream de Leitura, está dando erro. Eu estou declarando asssim:
    Dim arquivo As New IO.StreamWriter(nomerom, System.Text.Encoding.Default)
    Só que da esse erro:
    Overload resolution failed because no accessible 'New' can be called with these arguments: 'Public Sub New(path As String, append As Boolean)': Value of type 'System.Text.Encoding' cannot be converted to 'Boolean'. 'Public Sub New(stream As System.IO.Stream, encoding As System.Text.Encoding)': Value of type 'String' cannot be converted to 'System.IO.Stream'.
    O que que é isso?? Bem, pro pessoal que as vezes acompanha o tópico ai, vai saber, né, eu vou postar como eu consegui fazer:
    arquivo.BaseStream.Seek(x, IO.SeekOrigin.Begin)
    Onde "x" é a variavel da posição do arquivo. Na verdade, o titio Gray que me ensinou. :P E gray, eu tenho outra duvida: bem, eu estou girando o arquivo em um For usando isto que você me passou, só que na hora de declarar a Stream de Leitura, está dando erro. Eu estou declarando asssim:
    Dim arquivo As New IO.StreamWriter(nomerom, System.Text.Encoding.Default)

    Só que da esse erro:

    Overload resolution failed because no accessible 'New' can be called with these arguments:

    'Public Sub New(path As String, append As Boolean)': Value of type 'System.Text.Encoding' cannot be converted to 'Boolean'.

    'Public Sub New(stream As System.IO.Stream, encoding As System.Text.Encoding)': Value of type 'String' cannot be converted to 'System.IO.Stream'.

    O que que é isso??

  8. Bem, isso ai deu certo Gray.

    O meu método de como "rodar" o arquivo da certo tambem, então eu vou seguir ele mesmo. Só que eu estou com um problema: como eu faço para levar o Metodo Read para uma determinada posição do arquivo? Por exemplo, o tamanho do arquivo é 100, e eu tenho um laço com o contador, certo? Só que eu quero começar a ler a partir do dado 50, só que ele sempre vai ler do dado 0, como eu faço para que ele comece a ler do dado 50, por exemplo?

  9. Bem, eu sei que faiz tempo que não continuo essa duvida, mas vamos la:

    Eu vi que se eu souber a quantidade de caracteres do arquivo eu posso coloca-lo em um For e ler caracter por caracter, usando somente o Método Read. Só que o problema é pegar a quantidade de caracteres sem passar o conteúdo do arquivo para uma variavel, já que eu estou tentando evitar isso. Bem, tem como pegar a quantidade de caracteres do arquivo sem colocar seu conteúdo em uma váriavel?

  10. Eita, quanta pergunta! É mais ou menos assim:

    Tipo, eu lembro que você me falou que quando está o Lápis na DG é porque está em modo de edição e quando está a setinha é porque já foi fechado o modo de edição, certo? Pois bem, digamos que eu queira inserir o nome Jaba, uma letra em cada coluna, "J" na 1º coluna, "a" na 2º, "b" na 3º e "a" na 4º. Acontece que quando eu digito a ultima letra, e clico em um botão que vai salvar os dados da DG em uma DataTable, o ultimo dado que eu digitei, no caso a 4º letra, simplesmente desaparece da DG e não aparece na DT. Ai você falou que era porque o seu modo de edição ainda estava aberto, e eu tinha que fecha-lo. Bem, na época funcionou com esse código que você passou, mas agora não esta funcionando, entendeu?

    Olha só, acabei de achar o tópico que você me explicou:

    http://scriptbrasil.com.br/forum/index.php?showtopic=73010

  11. E ai pessoal, beleza? Eu estou com um probleminha aqui que não consigo resolver. Bem, para se fechar a edição de uma DG é só fazer isso, não é?

                        Dim cm As CurrencyManager = Me.dg.BindingContext(dgtabela16bits.DataSource)
                        cm.EndCurrentEdit()
                        cm.Refresh()
                        dt = dg.DataSource

    Só que acontece que o ultimo dado ainda não é salvo, o que eu estou fazendo de errado?

×
×
  • Criar Novo...