:::: MENU ::::
  • Delphi Build

    Delphi Build

Blog

  • maio 05 / 2007
  • 0
captura, componente, delphi, erro, programação

Componente TDcCapturaErro

 
Difficulty level not set for this Post

Tweet

Trecho de código do componente TDcCaptureErro.

Este componente não está totalmente pronto, mas dá pra aproveitar grande parte de seu código.
Na verdade o único bug que ele tem é na função que detecta se há ou não acesso a internet no computador onde o erro acontece.
Em banda larga via rede (lan) ou proxy funciona, mas linha discada de vez em quando não detecta.

Disponibilizei o componente para todos. Vejam minha seção Downalods.




procedure TDcCaptureErro.Execute(Sender: TObject; E: Exception);
var
Arquivo: TextFile;
NomeAlias: TStringList;
NomeBDECFG: TRegistry;
fFor: Integer;
fTpObjeto: string;
function ReplaceStr(Caracter: string; Quantidade: Integer): string;
var
I: Integer;
begin
Result := '';
for I := 0 to Quantidade - 1 do
Result := Result + Caracter;
end;
begin
if (FAtivo) and not (csDesigning in ComponentState) then
begin
if (Sender.ClassName <> TForm.ClassName) then
fTpObjeto := Sender.ClassName
else
fTpObjeto := TForm(Sender).Parent.Name;
if not DirectoryExists(FDiretorioErro) then
ForceDirectories(FDiretorioErro);
AssignFile(Arquivo, FDiretorioErro + FNomeArqErro);
ReWrite(Arquivo);
Append(Arquivo);
try
FErro := E.Message;
WriteLn(Arquivo, 'Relatório de erros gerado pelo Sistema.');
WriteLn(Arquivo, ReplaceStr('-', 50));
WriteLn(Arquivo, 'Descrição do erro..: ' + E.Message);
WriteLn(Arquivo, 'Código erro Windows: ' + IntToStr(IOResult));
WriteLn(Arquivo, 'Sistema............: ' + TApplication(Sender).ExeName);
WriteLn(Arquivo, 'Empresa............: ' + FCliente);
WriteLn(Arquivo, 'Usuário ativo......: ' + FUsuario);
WriteLn(Arquivo, 'DATA/HORA: ' + DateToStr(Date) + ' - ' +
TimeToStr(Time));
WriteLn(Arquivo, ReplaceStr('-', 50));
WriteLn(Arquivo, 'Informações sobre banco de dados');
WriteLn(Arquivo, 'ALIASES ATIVOS');
NomeAlias := TStringList.Create;
Session.GetAliasNames(NomeAlias);
for fFor := 0 to NomeAlias.Count - 1 do
begin
WriteLn(Arquivo, ReplaceStr(' ', 20) + '> ' + NomeAlias[fFor]);
end;
NomeAlias.Free;
NomeBDECFG := TRegistry.Create;
NomeBDECFG.RootKey := HKEY_LOCAL_MACHINE;
if NomeBDECFG.RegistryConnect('') then
begin
if NomeBDECFG.OpenKey('SOFTWARE\BORLAND\DATABASE ENGINE', False) then
begin
WriteLn(Arquivo, 'CFG ativo : ' +
NomeBDECFG.ReadString('CONFIGFILE01'));
end;
end;
NomeBDECFG.CloseKey;
NomeBDECFG.Free;
WriteLn(Arquivo, 'Erro chamado pelo objeto : ' + TComponent(Sender).Name);
WriteLn(Arquivo, 'Erro gerado pelo form : ' + TComponent(Sender).Owner.Name);
WriteLn(Arquivo, 'Caption do Form: ' + TForm(TComponent(Sender).Owner).Caption);
FEmpresa.FConexao.FAnexo := FDiretorioErro + FNomeArqErro;
finally
CloseFile(Arquivo);
end;
ChamaForm(Sender);
end;
end;
Parabéns, sua inscrição no Feed RSS foi aceita. Leia em primeira mão todas as notícias do blog.

Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.

Siga também o autor @asrsantos

  • maio 05 / 2007
  • 0
borland, clubedelphi, delphi, delphi2007, Desenvolvimento, dicas

Alguns atalhos da IDE do Delphi

 
Difficulty level not set for this Post

Tweet

Alguns atalhos da IDE do Delphi pra ajudar na produtividade:

Ctrl+Shift+I: Indentar multiplas linhas de código de uma única vez em “n” espaços (conforme o que estiver especificado em Tools/Editor Options/General/Block Indent).

Ctrl+Shift+U: Recuar indentação em “n” espaços (ídem acima).

Ctrl+Shift+0 a 9: Inserir um Bookmark no editor de código. Ex: Você está na linha 845 e tecla Ctrl+Shift+0 (irá aparecer um pequeno quadrado com o número 0 à esquerda do editor). Você vai para o início da unit e, para voltar para a linha 845, é só teclar Ctrl+0. Tecle novamente Ctrl+Shift+0 para desmarcar.

Alt+G: Ir para uma determinada linha.

Ctrl+Shift+Seta para cima ou para baixo: Intercala entre o cabeçalho da procedure/função e a implementação da mesma.

Ctrl+Shift+C: Class Completion. Este recurso é muito interessante para “auto-completar” uma função/procedure que você irá criar. Ex: Você digita o seguinte cabeçalho de procedure na seção de interface da unit:

procedure Imprimir(Sender: TObject; Relatorio: String);
Ao teclar Ctrl+Shift+C, automaticamente o Delphi insere na área de Implementation (no final da unit) o “corpo” da procedure, como segue:

procedure Imprimir(Sender: TObject; Relatorio: String);
begin
end;

Este recurso também funciona da forma inversa, ou seja, se você implementar o “corpo” da procedure/function, e teclar Ctrl+Shift+C, o Delphi irá adicionar o cabeçalho na área de interface da unit.

Ctrl+Mouse: Clique com o botão esquerdo do mouse mantendo pressionada a tecla Ctrl sobre a chamada a uma procedure/function/variável para localizá-la na unit atual ou em outra unit.

Ctrl+J (Code Templates): Este recurso também tem uma boa utilidade.

Digamos que você, a todo momento, precise usar um “if..then..else”. Ao invés de digitar todo comando, você pode teclar Ctrl+J e, localizar o Template (modelo) apropriado na janela que se abre. Tecle enter para aplicar o Template escolhido. Para alterar ou incluir novos templates, vá em Tools/Editor Options/Code Insight.

Ctrl+O+U: Alterna a caixa (maiúscula/minúscula) do código selecionado.

Ctrl+K+E: Converter o código selecionado para minúsculas.

Ctrl+K+F: Converter o código selecionado para maiúsculas.

Ctrl+E: Ativa a busca incremental. Você pode pressionar Ctrl+E e digitar diretamente a palavra que deseja procurar, sem a necessidade de passar por uma caixa de diálogo especial (Ctrl+F).

Ctrl+Shift+Setas: Mover o(s) componente(s) selecionado(s) rapidamente no form. O “salto” da movimentação é determinado pelo valor informado em Tools/Environment Options/Grid size X e Y.

Ctrl+Setas: Move o componente pixel a pixel.

Shift+Setas: Redimensiona o componente pixel a pixel.

Ctrl + F12: Alterna entre o Form e seu Modo Texto, ou seja, equivale ao clique com o direito do mouse no form e em seguida no item View as text (em modo form) e View as Form (em modo texto).

Parabéns, sua inscrição no Feed RSS foi aceita. Leia em primeira mão todas as notícias do blog.

Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.

Siga também o autor @asrsantos

  • maio 03 / 2007
  • 1
borland, clubedelphi, codegear, delphi, delphi2007, Desenvolvimento, informações, novidades, revista, [Arquivo]

Novidades Delphi 2007 III

 
Difficulty level not set for this Post

Olá pessoal,

Mais uma vídeo-aula mostrando as novidades da vesão 2007 do Delphi foi disponibilizada no portal Devmedia. Na aula apresento como se trabalhar com Ajax na nova VCL for WEB, novo nome dado a suíte de componentes IntraWeb.:

Resumo:
No Delphi 2007 a suíte de componentes IntraWeb passa a se chamar VCL fo Web e vem com uma série de novidades. Uma delas, diria que a mais significativa, é o fato de ter compatibilidade total com Ajax o que facilita bastante o desenvolvimento de sites usando esta tecnologia.

O link direto é:
Novidades do Delphi 2007 III

Veja também
Novidades do Delphi 2007 parte II
Novidades do Delphi 2007 parte I
Instalação do Delphi 2007 Trial

Boa leitura

Parabéns, sua inscrição no Feed RSS foi aceita. Leia em primeira mão todas as notícias do blog.

Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.

Siga também o autor @asrsantos

  • maio 02 / 2007
  • 1
análise, borland, clubedelphi, codegear, delphi, delphi2007, Desenvolvimento, ferramenta, função, function, informações, novidades, procedimento, procedure, programação, sucesso, utilidade, [Arquivo]

Novo site da CodeGear

 
Difficulty level not set for this Post

Olá pessoal,

  • A CodeGear acaba de reformar seu website trazendo uma interface aparentemente mais simples e mais organizada.
  • Pra quem está afim de entender um pouco melhor como funciona o Delphi for PHP e necessita de um help filie-se ao newsgrupo no-techical (inglês) presente no link: TeamB

Boa leitura


Siga @tdevrocks no Twitter e fique por dentro de todas as atualizações do blog.

Adriano Santos é especialista em linguagens de desenvolvimento, autor de diversos artigos e membro do Embarcadero Community Evanglist Program. Siga-o no twitter @asrsantos e fique por dentro de tudo que acontece nos bastidores de TDevRocks.

Google+
[Fale Conosco] Contato