sábado, 18 de dezembro de 2010

Delphi - Access violation at address 03491BC9 in module 'dbexpora.dll'

Erro ao executar um clientdataset que chama uma procedure Oracle:
Access violation at address 03491BC9 in module 'dbexpora.dll'. Read of address 00000088.

Este erro sempre ocorre quando há algum erro na passagem dos parâmetros.

Se você estiver passando os parâmetros via CommandText, pode ter esquecido algum ":" antes do parâmetro. Ou então o SQLQuery está com parâmetros diferentes do ClientDataset

Delphi - Rave Reports: Unable to gain control of Rave data Communication System.

Erro: Unable to gain Control of RAVE Data communication System

Ao abrir duas aplicações que utilizam o mesmo relatório Rave simultaneamente, é apresentada. A solução é bastante simples, bastando abrir o arquivo de projeto (DPR) e acrescentar o seguinte:

program Project1;
uses
SysUtils, RPDefine, Forms,
Unit1 in ‘Unit1.pas’ {Form1};
{$R *.res}
begin
RPDefine.DataID := IntToStr(Application.Handle);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Solução extraída do Blog do André Ferreira de Moraes
http://anfm.blogspot.com/2009/04/erro-unable-to-gain-control-of-rave.html

Delphi - chamando procedure com parâmetro tipo data: errro Invalid Field Type

Ao dar Execute em um client dataset que está chamando uma procedure em Oracle, que possui parâmetros tipo data, ocorre o erro Invalid Field Type.

Para resolver, você deve usar uma variável do tipo SQLTimeStamp para passar os parâmetros.

Adicione a unit SQLTimST no Uses;

Exemplo:
var
myTimeStamp: TSQLTimeStamp;
begin

cdsAuxGeral.Close;
cdsAuxGeral.CommandText :=
' begin ' +
' pkg_teste.RetornaVendasPeriodo(:p_DataHoraIni, :p_DataHoraFim, :lst);'+
' end; ';
cdsAuxGeral.Params.Clear;

cdsAuxGeral.Params.CreateParam(ftTimeStamp,'p_DataHoraIni', ptInput);
cdsAuxGeral.Params.CreateParam(ftTimeStamp,'p_DataHoraFim', ptInput);


cdsAuxGeral.Params.CreateParam(ftCursor,'Lst', ptOutput);

myTimeStamp := DateTimeToSQLTimeStamp(pPeriodoIni);
cdsAuxGeral.Params.ParamByName('p_DataHoraIni').AsSQLTimeStamp := myTimeStamp;

myTimeStamp := DateTimeToSQLTimeStamp(pPeriodoFim);
cdsAuxGeral.Params.ParamByName('p_DataHoraFim').AsSQLTimeStamp := myTimeStamp;

cdsAuxGeral.Execute;

Delphi - Rave Reports imprimindo o texto 'INVALID' no datatext

Isso acontece quando seu ClientDataset foi alterado (ao adicionar ou modificar algum campo).

No projeto do relatório, com o RaveReports aberto, localize seu RvDataSetConnection (lado direito da tela), clique com o botão direito e selecione REFRESH. E confirme com SIM para atualizar os campos.

Configurando TNSNAMES.ORA no Oracle Client

- Configurando o TNSNAMES.ORA no Oracle XE Client:

- Menu Iniciar\Executar: regedit;
- Crie um string value (valor de sequencia) chamada TNS_ADMIN em HKLM\Software\Oracle\KEY_XEClient\ , com value data = C:\XEClient\NETWORK\ADMIN


- Crie o arquivo tnsnames.ora na pasta C:\XEClient\NETWORK\ADMIN;
- E coloque configure suas conexões dentro dele.


***************************************
Configuring tnsnames.ora for Oracle 10g XE client

1. open regedit
2. create a string value HKLM\Software\Oracle\KEY_XEClient\TNS_ADMIN with value data = 'C:\XEClient\NETWORK\ADMIN'
3. create the tnsnames.ora file C:\XEClient\NETWORK\ADMIN\tnsnames.ora
4. Fill this file with your data conections;

quarta-feira, 1 de dezembro de 2010

Delphi - Internal error L681 ao dar o BUILD no projeto

No Delphi, ao dar um BUILD no projeto, ocorre o erro de compilação:
"Internal error L681".

Solução:
O erro ocorre pois a declaração de 'overload' de alguma função está replicada no bloco IMPLEMENTATION, e deve estar apensa no bloco INTERFACE.

Você deve retirar a palavra 'overload;' da função, no bloco IMPLEMENTATION

Ex.:

interface

function RetornaValor(pParam : String): Integer; overload;

implementation

function RetornaValor(pParam : String): Integer; overload;
begin
...
end;

terça-feira, 26 de outubro de 2010

Delphi - Erro Provider not exported ao abrir ClientDataSet criado dinamicamente

Delphi

Erro Provider not exported ao abrir (Open) ClientDataSet criado dinamicamente.

O erro ocorreu comigo pois eu estava setando o datasetprovider de forma incorreta.

aCds - meu clientedataset
aDsp - meu datasetprovider

(errado)

aCds.ProviderName := aDsp.Name;


(correto)
aCds.SetProvider(aDsp);



Felipe

sábado, 1 de maio de 2010

Como converter e-mails do Thunderbird para o Outlook Express

Infelizmente a Mozilla não disponibiliza nenhuma função para exportar os e-mails do Thunderbird para o Outlook Express.

Para quem precisar, basta usar uma ferramenta chamada IMAPZIE.
http://www.broobles.com/imapsize/download.php (se o link não funcionar, dê uma procurada no Google).

Depois de instalar:
- Abra o programa e acesse o menu Tools\Mbox2Eml.
- Clique no botão Select MBOX Files to convert.
- Localize a pasta onde o Thunderbird gravar os e-mails;
- Se você estiver na pasta do Thunderbird e não aparecer nada, basta renomear as pastas do Thuderbird, adicionando a extensão .MBOX no final Ex. (Pasta1 ==> Pasta1.mbox).
- Selecione as pastas e clique em Abrir.
- Defina a pasta de destino;
- E clique no botão Convert.
- Serão gerados vários arquivos .EML.
- Daí é só abrir o Outlook Express, e arrastar os e-mails para dentro do Outlook Express.

Dica: se você tiver muitas pastas para serem convertidas, faça a conversão uma pasta por vez, pois os e-mails serão convertidos todos na mesma pasta, e você não saberá depois à qual pasta eles pertence.

Bom, é isso aí.

terça-feira, 30 de março de 2010

Mensagem: Aplicativo não inicializado corretamente (0x0150002)

Ao abrir sua aplicação, aparece a mensagem:
"Aplicativo não inicializado corretamente (0x0150002). Clique em OK para finalizar a execução."

Esta mensagem só ocorre se sua aplicação utiliza as funções das DLLs da Bematech: sigma_bema.dll e libeay32.dll (dlls que tem funções que facilitam a geração de arquivos para atender a lei PAF-ECF).

Essas DLLs exigem framework versão mínima 2.0 (informação confirmada com Suporte da Bematech).

Se a máquina não tiver o framework instalado, acesse o site da microsoft, faça o download do Framework 2.0 ou posterior, de preferência a mais recente, instale, reinicie, e pronto!


http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&displaylang=pt-br

Napa

segunda-feira, 18 de janeiro de 2010

Delphi 7 - pegando o diretório Arquivos de Programas (ProgramFilesDir)

Para pegar o nome da pasta Arquivos de programas em tempo de execução (se é Program Files ou Arquivos de Programas, e em qual unidade está), basta seguir o exemplo abaixo.

var
Reg := TRegistry;
pProgramFilesDir: String
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False);
pProgramFilesDir := Reg.ReadString('ProgramFilesDir');
Reg.CloseKey;
Reg.Free;
end;

Vai retornar, por exemplo: C:\Arquivos de Programas ou C:\Program Files.


Napa

sábado, 16 de janeiro de 2010

Delphi 7 - problema com componente PNGBUTTON/PNGEXTRA/PNGDELPHI

Isso já tinha acontecido uma vez e a desinstalação e reinstalação resolveram o problema (plano A).

Mas na última vez não funcionou. Quando eu tentava inserir uma imagem no botão PNG, após selecionar a imagem e confirmar, o Delphi apresentava o erro "Invalid Property value".
Consegui fazer funcionar depois de muito tentar (Plano B).

Seguem abaixo as duas tentativas.

Plano A

- No Delphi, menu Tools\Envoirment Options\, na aba Library, clique no botão [...] no campo Library path e remova a referência da pasta PNGDELPHI.
- Feche o Delphi.

- Entre em C:\Arquivos de programas\Delphi Components\Delphi7\PNGDelphi e execute o PNGDelphi.dpk
- Vai abrir o Delphi, clique em COMPILE e depois em INSTALL, ou seja, reinstalamos o componente.
- Entre no delphi e tente inserir a imagem no botão novamente.


Plano B
Se o erro persistir, feche novamente o Delphi.
- Acesse a pasta C:\Arquivos de programas\Borland\Delphi7\Projects\Bpl
- Localize todos os arquivos PNGDelphi (.bpl, .dcp, .~bpl) e exclua todos.
- Em seguida, abra o Delphi.
- Ele vai apresentar mensagem dando falta dos arquivos BPL que excluímos. E vai perguntar se deseja tentar abri-lo na próxima vez que executar o Delphi. Clique em NÃO.

Vamos reinstalar o componente:

- Entre em C:\Arquivos de programas\Delphi Components\Delphi7\PNGDelphi e execute o PNGDelphi.dpk;
- O Delphi será aberto, clique em COMPILE e depois em INSTALL, para reinstalar o componente.
O Delphi criará novamente os arquivos da pasta BPL.

- Tente adicionar um PNG ao botão.
- Caso ainda não funcione, siga os procedimentos abaixo.

- Com o Delphi aberto, vá em Component\Install Packages;
- Clique no botão ADD e vá até a pasta C:\Arquivos de programas\Borland\Delphi7\Projects\Bpl
- Selecione o arquivo PNGDelphi.BPL, clique em Abrir e depois clique em OK.

- Feche o Delphi e abra novamente.

Pronto, agora irá funcionar.

Napa.