Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erich8vb

[Resolvido] Erro em função

Recommended Posts

Oi oq é o "run-time erro '6':" da dando este erro nesta linha.

 

num_bytes = LOF(fnum)

 

É uma função para abrir um Hex.

 

Private Sub ab_Click()



	DlgArquivo.Flags = _
		cdlOFNFileMustExist + _
		cdlOFNHideReadOnly + _
		cdlOFNLongNames
		
	  On Error Resume Next
	  TxtDocumento.Text = ""
	  ' Habilita a opção de cancelar a abertura.
	  'DlgArquivo.CancelError = True
	  ' Título da janela de Abrir Arquivo.
	  DlgArquivo.DialogTitle = "Abrir Arquivo"
	  ' Exibe a caixa de diálogo para abrir arquivo.
	  DlgArquivo.ShowOpen
	  If Err.Number = cdlCancel Then Exit Sub
	If Err.Number <> 0 Then
		MsgBox "Error" & Str$(Err.Number) & _
			" selecting file." & vbCrLf & _
			Err.Description
	End If
	On Error GoTo 0
	
  LoadFile DlgArquivo.FileName, DlgArquivo.FileTitle
End Sub

Private Sub LoadFile(fname As String, ftitle As String)
Dim fnum As Integer
Dim num_bytes As Integer
Dim bytes() As Byte
Dim unk As String
Dim ch As Integer
Dim line1 As String
Dim line2 As String
Dim txt As String
Dim i As Integer
Dim j As Integer



	
	   'Me.Caption = "Editor de Textos - " + FileName
	   ' Abre um arquivo para entrada de informações.
	 TxtDocumento.Text = ""
	 FileName = fname
	 FileTitle = ftitle
	 DoEvents
			  
			  'Introduzido
			  fnum = FreeFile
			  Open fname For Binary As #fnum
			  num_bytes = LOF(fnum)
			  ReDim bytes(1 To num_bytes)
			  Get #fnum, , bytes
			  Close fnum
			  
			  i = 1
			  
	Do While i <= num_bytes
		line1 = Format$(i, "@@@@@@: ")
		line2 = ""
		For j = 0 To 7
			If i + j > num_bytes Then
				line1 = line1
			Else
				ch = bytes(i + j)
				txt = txt & Format$(Hex$(ch), "@@")
				If ch >= 32 Then
					line2 = line2 & Chr$(ch)
				Else
					line2 = line2 & unk
				End If
			End If
		Next j
		line2 = line2 & line2
		i = i + 8
	Loop
	
		  TxtDocumento.Text = txt
		  ' Fecha o arquivo.
		  Close #1

End Sub

se puderem me ajudar obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O interessante é que ele so da este erro quando tento abrir este.

HEXDUMP.exe com 22kb

Porem com este tudo bem.

EditorHex.exe com 48 kb.

É o que eu estou pensando?

A variável num_bytes não pode ser Integer tem que suportar mais bytes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É tinha que ser Long mas agora esta dando um erro aqui.

If i + j > num_bytes Then

 

Valores das variáveis na hora do erro.

num_bytes =49152

i =32761

j =7

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erich, por favor, para novos assuntos, abra novos tópicos.

 

Dividi esse tópico pois você havia postado em um tópico onde o assunto não era nem semelhante à sua dúvida.

 

Novos tópicos com títulos claros facilita para outros membros acharem a solução para suas dúvidas.

 

O erro que estava dando para i era overflow? Se for, é porque o número que está passando para ele é maior que o número máximo que uma variável do tipo integer suporta. Você pode usar o long como usou ou variant.

 

Parabéns pela resolução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.