Jump to content


Kurt

Member Since 01/05/2003
Offline Last Active 15/02/2006, 12:22
-----

Topics I've Started

Log De Erros

18/10/2004, 19:52

Embora o VB não apresente um modelo de tratamento de erros amigável podemos usar recursos simples de forma a fazer um registro de log de erros para nossa aplicação de forma a documentar as ocorrências do sistema durante sua utilização. Podemos usar recursos avançados como classes e criar verdadeiros sistemas de trace de erro.

Meu objetivo aqui é mais simples. Vou mostrar como criar de forma beeemmm simples um log de registro de erros. Acompanhe:

- primeiro você deve definir onde deseja gravar e o que deseja gravar.

Vou gravar o log no arquivo chamado logErros.log que estará na pasta c:\log\

Vou registrar no arquivo os seguintes dados :

Nome da aplicação

Versão

Descrição do erro

Numero do erro

A origem do erro

A hora da ocorrência

Inicie um novo projeto no VB. E no formulário padrão insira dois botões de comando e uma caixa de texto multiline.

O código abaixo representa o código associado ao evento Click do botão de comando : Gera Erro e Exibe Erros:


Private Sub Command1_Click()

On Error GoTo trata_Erro
'Estou forçando a ocorrência de um erro
Print 4 / 0
Exit Sub

trata_Erro:
If Err.Number <> 0 Then
  registraLogErros Err.Number, Err.Description, "Command1_click"
  Err.Clear
  Resume Next
End If
End Sub

Private Sub Command2_Click()
  leLog Text1
End Sub


Percebeu que temos duas rotinas:

registraLogErros - passa os dados do erro para gravação no Log

leLog - lê o arquivo de log e exibe na caixa de texto

Estas rotinas deverão estar em um módulo do seu projeto. Inclua um módulo no menu Project|Add Module e insira o código abaixo:

Option Explicit
Public caminho As String

Public Sub registraLogErros(ByVal lNumero As Long, ByVal sDescricao As String, ByVal sOrigem As String)

'define o objeto filesystem e demais variaveis
Dim fso As New FileSystemObject
Dim arquivo As File
Dim arquivoLog As TextStream
Dim msg As String

'se o arquivo não existir então cria
If fso.FileExists(caminho) Then
  Set arquivo = fso.GetFile(caminho)
Else
  Set arquivoLog = fso.CreateTextFile(caminho)
  arquivoLog.Close
  Set arquivo = fso.GetFile(caminho)
End If

'prepara o arquivo para anexa os dados
Set arquivoLog = arquivo.OpenAsTextStream(ForAppending)

'monta informações para gerar a linha com erro
msg = App.EXEName & " V " & App.Major & " " & " , Err. no: " & lNumero & " : " & sDescricao & " , Orig.: " & sOrigem & " , " & Now()

' inclui linhas no arquivo texto
arquivoLog.WriteLine msg
' escreve uma linha em branco no arquivo - se voce quiser
'arquivoLog.WriteBlankLines (1)

'fecha e libera o objeto
arquivoLog.Close
Set arquivoLog = Nothing
Set fso = Nothing

End Sub

Public Sub leLog(t As Control)

Dim fso As New FileSystemObject

'declara as variáveis objetos
Dim arquivo As File
Dim fsoStream As TextStream
Dim strLinha As String
Dim arquivologerros As String

'abre o arquivo para leitura
If fso.FileExists(caminho) Then
  Set arquivo = fso.GetFile(caminho)
  Set fsoStream = arquivo.OpenAsTextStream(ForReading)
Else
  MsgBox "O arquivo não existe", vbCritical
Exit Sub
End If

' le o arquivo linha a linha e exibe no text1
Do While Not fsoStream.AtEndOfStream
  strLinha = strLinha & fsoStream.ReadLine & vbCrLf
  t = strLinha
Loop

'libera as variaveis objeto
fsoStream.Close
Set fsoStream = Nothing
Set arquivo = Nothing
Set fso = Nothing

End Sub


Eu estou usando o objeto FileSystemObject para criar , ler e exibir os dados do arquivo de log. O modelo de objetos FSO está contida na biblioteca Scripting, que está localizada no arquivo Scrrun.Dll. Crie uma referência a biblioteca marcando na caixa de diálogo References o item "Microsoft Scripting Runtime".

Nota: Como o modelo FSO não suporta ainda a criação de arquivos randômicos ou binários. Para criar estes tipos de arquivos, use o comando Open com o argumento Random ou Binary. Abaixo uma rotina que escreve no log de erros usando o comando Open:

Public Sub registraLogErros(ByVal lNumero As Long, ByVal sDescricao As String, ByVal sOrigem As String)
Dim FileNum As Integer

FileNum = FreeFile

    'grava os erros no arquivo Erros.log
  Open caminho For Append As FileNum
  Write #FileNum, lNumero, sDescricao, sOrigem, Now()

Close FileNum
End Sub


Para que tudo funcione você deve criar uma rotina sub Main no módulo com o código abaixo:

Private Sub main()
  caminho = "c:\log\logErros.log"
  Form1.Show vbModal
End Sub


Deve declarar também na seção General Declarations do módulo a variável caminho:

Option Explicit
Public caminho As String

Pronto agora é rodar , gerar os erros e exibí-los!

Retirado de Macoratti.net

Rede

17/10/2004, 14:41

E ai galera... eu to com 2 pcs aki em casa, um eh otimo(athlon xp 2.4) e o outro eh uma xxxxxx(k6-2 500).
O k6 eh claro, tem dificuldade em trabalhar com programas pesados e tb eh mto lento. Eu keria saber se vale a pena deixar o athlon XP servindo ele com os programas + pesados para facilitar o trabalho com o k6. Adianta mta coisa? :huh:
Flw!

Utilizando O Masked Edit

17/10/2004, 13:18

O Masked Edit é um componente mto util para validar q tipo de caracteres vc ker q o usuario digite em algum campo e tb pode ser usado para criar máscaras, ou seja, exemplificar para o usuario de como deve ser preenchido um devido campo, como de telefone, cpf, etc...
Vc encontra esse componente em Menu>Project>Componentes>Microsoft Masked Edit Controls 6.0.
Vou passar alguns codigos uteis:

-Aceitar apenas números:
No KeyPress do MaskedEdit coloque o codigo:

If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack Or KeyAscii = Asc(",") Then
Else
If KeyAscii = Asc(".") Then
KeyAscii = Asc(",")
Else
KeyAscii = 0
End If
End If

Obs.: Vale lembrar q a propriedade KeyPreview do formulario TEM q estar True.


-Criando mascaras:
Na propriedade Mask do MaskedEdit vc deve colocar o q vc quer de acordo com a sua necessidade, Exemplo:
Para Telefone, com DDD da cidade: (##)####-####
* Veja q # equivale ao caracter a ser usado.
Para CPF: #########-##
E por ai vai...


- Definindo a propriedade Format:
Essa propriedade valida a forma q vc quer q os caracteres apareçam, podendo escolher entre formato Monetario(R$#,##0.00), dia/mes/ano(dd/mm/aa), horario(hh:mm), etc...


Flw... (y)

Formulario Mdi

02/10/2004, 17:16

Como faco para um formulario filho ficar centralizado num MDI, qndo eu tentei usar a proprieda StartUpPosition deu um erro.
Ateh +...

Fazer Um Programa Trial

28/08/2004, 18:25

E ai galera! Alguem sabe criar programa Trial??? Aguardo respostas

IPB Skin By Virteq