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

Problema Com Arquivos (novamente)


Andersonjb

Pergunta

De novo, problemas com arquivos binários, hehe. Bem pessoal, vamos ver se vocês me ajudam (principalmente o Gray, hehe). Bom, eu estou "girando" um arquivo bináriamente, contando posição por posição, e quando chega em uma posição determinada pelo usuário, ele pega esse dado e imprime em uma RichTextBox. Bem, como os dados são aleatórios, e podem ser vários, eu tenho que redirecionar o arquivo toda vez que retiro um dado, com este código:

arquivojogo.BaseStream.Seek(k, IO.SeekOrigin.Begin)
Bem, essa linha leva o arquivo a posição que eu quero, de acordo com a váriavel "k". Ai, eu pego o dado corrente da seguinte maneira:
Dim a As String = arquivojogo.Read
Bem, mas acontece é que quando eu "pulo" uma grande distância no arquivo, ao invés de os dados serem pegos a partir da posição que determinei, eles são pegos continuamente. Por exemplo:
Posição Dado Referente 100 J 101 a 102 b 103 a 104 s 105 a 150 o 151 i
Determino para pegar os dados da posição 100 até a posição 103, e apos a 103, pegar os dados da posição 150 até 151. Ao invés do dado ficar assim:
"Jabaoi"
Ele fica assim:
"Jabasa"
Entenderam? Bem, o arquivo está redirecionando certo, pois eu eu acompanho a posição pelo Debug e ele redireciona a posição, mas o erro está nessa linha:
Dim a As String = arquivojogo.Read

Pois, mesmo redirecionado, ele continua pegando dados sequenciamente do arquivo ao invés da posição que eu determinei, mesmo reposicionando o arquivo antes.

Estou pegando esses dados de maneira correta?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você está mudando a posição em BaseStream e não no objeto que você está usando para ler. Se "arquivojogo" for um StreamReader, como imagino, está correto ele ler sequencialmente, já que esta é a razão de ser de um StreamReader. Todavia, você poderia simplesmente utilizar o método ReadByte do BaseStream para ler um byte na posição determinada pelo Seek (experimente este e você verá a leitura como você espera).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, agora deu certo Gray, mais la vai uma pergunta: a primeira coisa que eu suspeitei foi isso. E eu usei o Método Read() do BaseStream, mas simplesmente dava erro, e agora, com a sua ajuda, alcancei o meu objetivo com o Método ReadByte(). Bem, qual é a diferença entre o Método Read() e o Método ReadByte()?

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,3k
×
×
  • Criar Novo...