Re: RES: [delphi-br] Criando DLL
Felipe, Primeiramente, obrigado pela resposta, você não sabe o quanto me ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no primeiro form o problema foi resolvido, agora estou com problemas quando ao outro que no Caso é um Report. Quando uso o Report num projeto comum, ele funciona normal ao chamar qualquer obejto do mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada para poder utilizá-lo na minha DLL??? Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!! Marcelo. --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior [EMAIL PROTECTED] escreveu ..outra coisa, no caso, vc ta usando ADO, já vou avisando que vc terá problemas com ActiveX em projeto DLL.. para resolver, faça o seguinte: no OnCreate do 1o form a ser criado no projeto dll, inclua a linha: CoInitialize( nil ); ..e no OnDestroy: CoUninitialize; ..Ah! assim como o Anderson comentou, não use String nos parametros dos métodos que serão exportados na sua dll.. sendo assim, basta mudar o seguinte: Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall; ..pronto, valeu!! ___ Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz. http://br.info.mail.yahoo.com/ -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/ Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
[delphi-br] Criando DLL
Pessoal, Preciso criar uma DLL que se conecta a uma base SQL Server e gere um Relatório em PDF. Eu sei como fazer tudo isso, esse não é o problema, o que está me faltando mesmo é um pouco de conhecimento referente a parte de DLL's mesmo. Seguinte: Criei o meu projeto DLL conforme abaixo: library minhadll; uses SysUtils, Classes, uPrincipal in 'uPrincipal.pas' {frmPrincipal}, uRelatorio in 'uRelatorio.pas' {Rep: TQuickRep}; {$R *.res} Procedure GeraPDF( Servidor, Tipo: String ); stdcall; begin frmPrincipal.GeraRelatorio( Servidor, Tipo ); end; exports GeraPDF; end. Como vocês podem ver tenho duas Units no meu projeto. Uma é somente um form para eu colocar os componentes que necessito, no Caso o ADOConnection, ADOQuery e um outro que uso para exportar para PDF. A outra unit é um Report. Ao debugar bem na linha abaixo: frmPrincipal.GeraRelatorio( Servidor, Cliente, Tipo, Dir, DataIni, DataFim ); recebo um erro de access violation. Como as minhas ações estão no form frmPrincipal e o erro acontece justamente ao chamar algo que está nele, percebi que estava faltando eu criar o form. Aí tentei de todos os jeitos e não consegui. O que está faltando eu declarar para que eu possa utilizar o form frmPrincipal. Para criar o frmPrincipal tentei um dos dois códigos abaixo: Forma 1: Application.CreateForm( TfrmPrincipal, frmPrincipal ) ; Forma 2: If frmPrincipal = Nil Then frmPrincipal := TfrmPrincipal.Create( Self ) ; Poderiam me ajudar Att, Marcelo A. Souza -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/ Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
[delphi-br] Problema com ntdll.dll - Urgente
Pessoal, Temos vários projetos aqui na empresa, mas somente um estou tendo um problema com a ntdll.dll. Os projetos estavam em D5 e agora estamos migrando para D7. Em D7 funcionava muito bem. Será que alguém poderia me ajudar Desde já agradeço!!! O erro que recebo é: Access Violation at address 7C912FFC in module 'ntdll.dll'. Write of adress 004050E1 O estranho é que nem o try except resolve... Segue a função onde está dando o erro: procedure ValidaCombo( Sender: TObject ); var lChar : string ; lCont : Integer ; begin If ( Sender as TComboBox ).Text = '' Then Exit ; ( Sender as TComboBox ).Text := UpperCase( ( Sender as TComboBox ).Text ); For lCont := 0 To ( Sender as TComboBox ).Items.Count - 1 do Begin //Linha onde ocorre o erro lChar := ( Sender as TComboBox ).Items.Strings[lCont] ; If UpperCase( lChar ) = UpperCase( ( Sender as TComboBox ).Text ) Then Exit ; End ; Application.MessageBox('Valor do campo invalido, favor selecionar um valor da lista', 'Mensagem do Sistema', MB_OK); ( Sender as TComboBox ).Text := '' ; ( Sender as TComboBox ).SetFocus ; ( Sender as TComboBox ).DroppedDown := True ; end; Att, Marcelo. -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[delphi-br] Re: Problema com ntdll.dll - Urgente
Pessoal, complementando o problema abaixo depois de dar mais umas fuçadas, percebi que o que ocorre é o seguinte: Me parece que no delphi 7 o componente combobox não aceita textos em branco pois é justamente quando eu tento passar um valor de uma posição do combobox que está em branco que ocorre o erro. Quando o combobox está com todos os itens preenchidos não ocorre o erro. Agora como validar se o item é vazio ou não??? Notar abaixo na minha função que a variável que recebe o valor de cada item da combo é do tipo String. Att, Marcelo. --- Em delphi-br@yahoogrupos.com.br, marcelloassouza [EMAIL PROTECTED] escreveu Pessoal, Temos vários projetos aqui na empresa, mas somente um estou tendo um problema com a ntdll.dll. Os projetos estavam em D5 e agora estamos migrando para D7. Em D7 funcionava muito bem. Será que alguém poderia me ajudar Desde já agradeço!!! O erro que recebo é: Access Violation at address 7C912FFC in module 'ntdll.dll'. Write of adress 004050E1 O estranho é que nem o try except resolve... Segue a função onde está dando o erro: procedure ValidaCombo( Sender: TObject ); var lChar : string ; lCont : Integer ; begin If ( Sender as TComboBox ).Text = '' Then Exit ; ( Sender as TComboBox ).Text := UpperCase( ( Sender as TComboBox ).Text ); For lCont := 0 To ( Sender as TComboBox ).Items.Count - 1 do Begin //Linha onde ocorre o erro lChar := ( Sender as TComboBox ).Items.Strings[lCont] ; If UpperCase( lChar ) = UpperCase( ( Sender as TComboBox ).Text ) Then Exit ; End ; Application.MessageBox('Valor do campo invalido, favor selecionar um valor da lista', 'Mensagem do Sistema', MB_OK); ( Sender as TComboBox ).Text := '' ; ( Sender as TComboBox ).SetFocus ; ( Sender as TComboBox ).DroppedDown := True ; end; Att, Marcelo. -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: RES: [delphi-br] E-mail em massa
Então jorge, só conheço thread em conceito nunca programei uma thread no delphi, peguei um exemplo mas mesmo assim não funcionou, veja como ficou o código: unit uEncaminhamentosAuto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, IBCustomDataSet, IBQuery, RxMemDS, Grids, DBGrids, CheckDBGrid, StdCtrls, Buttons, ImgList, ComCtrls, ToolWin, ExtCtrls, Gauges, IBStoredProc, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdBaseComponent, IdMessage; type TfrmEncaminhamentosAuto = class(TForm) memEmpresa: TRxMemoryData; qrEmpresa: TIBQuery; btnEnviar: TBitBtn; StatusBar1: TStatusBar; Panel1: TPanel; gauProgresso: TGauge; Bevel1: TBevel; cgridEmpresas: TCheckDBGrid; btnFechar: TBitBtn; memEmpresaEMP_FLAG: TBooleanField; memEmpresaEMP_CODIGO: TStringField; memEmpresaEMP_RAZAOSOCIAL: TStringField; dsEmpresas: TDataSource; memEmpresaEMP_CIDADE: TStringField; memEmpresaEMP_UF: TStringField; spEncaminhamentos: TIBStoredProc; memEmpresaEMP_SEGMENTO: TStringField; btnPesquisar: TBitBtn; qrTemp: TIBQuery; memEmpresaEMP_EMAIL: TStringField; edCodigoCliente: TEdit; PesqCodigoCliente: TSpeedButton; edNomeCliente: TEdit; PesqNomeCliente: TSpeedButton; Label1: TLabel; Label2: TLabel; edCurriculo: TEdit; PesqArquivo: TSpeedButton; Label3: TLabel; edHeadHunter: TComboBox; cbIncluir: TCheckBox; OpenDialog: TOpenDialog; edAssinatura: TMemo; Memo2: TMemo; edEmail: TEdit; edSenha: TEdit; IdMsgSend: TIdMessage; SMTP: TIdSMTP; edMensagemModelo: TMemo; edMensagemGerada: TMemo; btnCancelar: TBitBtn; procedure btnFecharClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure edCodigoClienteEnter(Sender: TObject); procedure PesqCodigoClienteClick(Sender: TObject); procedure PesqNomeClienteClick(Sender: TObject); procedure edCodigoClienteExit(Sender: TObject); procedure edCodigoClienteKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnPesquisarClick(Sender: TObject); procedure edCodigoClienteKeyPress(Sender: TObject; var Key: Char); procedure memEmpresaBeforeEdit(DataSet: TDataSet); procedure PesqArquivoClick(Sender: TObject); procedure edCurriculoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure edCurriculoExit(Sender: TObject); procedure FormShow(Sender: TObject); procedure edHeadHunterExit(Sender: TObject); procedure edHeadHunterChange(Sender: TObject); procedure cbIncluirClick(Sender: TObject); procedure btnCancelarClick(Sender: TObject); procedure btnEnviarClick(Sender: TObject); private { Private declarations } valida_email, parar : Boolean ; public { Public declarations } end; TThreadEmail = class(TThread) protected constructor Create; procedure Execute; override; procedure EnviaEmail; end; var frmEncaminhamentosAuto: TfrmEncaminhamentosAuto; var_prospecao_sp , var_prospecao_brasil , var_prospecao_cidade , var_prospecao_uf , var_prospecao_areas : String ; implementation uses uMenuPrincipal, uPesquisa, Funcoes; {$R *.dfm} procedure TfrmEncaminhamentosAuto.btnFecharClick(Sender: TObject); begin close ; end; procedure TfrmEncaminhamentosAuto.FormClose(Sender: TObject; var Action: TCloseAction); begin frmEncaminhamentosAuto := Nil ; Action := caFree ; end; procedure TfrmEncaminhamentosAuto.edCodigoClienteEnter(Sender: TObject); begin self.Top := ((frmMenuPrincipal.clientHeight-self.Height) div 2) - 32; end; procedure TfrmEncaminhamentosAuto.PesqCodigoClienteClick(Sender: TObject); begin //Chama o form If FrmPesquisa = Nil Then Begin FrmPesquisa := TFrmPesquisa.Create( Self ) ; FrmPesquisa.Show ; End; //Pesquisa de CPF FrmPesquisa.qrPesquisa.Active := False ; FrmPesquisa.qrPesquisa.SQL.Clear ; FrmPesquisa.qrPesquisa.SQL.Add('SELECT CLI_CODIGO AS CODIGO, CLI_NOME AS NOME_DO_CANDIDATO'); FrmPesquisa.qrPesquisa.SQL.Add('FROM ARQCLIENTES') ; FrmPesquisa.qrPesquisa.SQL.Add('ORDER BY CLI_CODIGO'); FrmPesquisa.qrPesquisa.Active := True ; //Strings de Pesquisa FrmPesquisa.SQL1:= 'SELECT CLI_CODIGO AS CODIGO, CLI_NOME AS NOME_DO_CANDIDATO FROM ARQCLIENTES WHERE CLI_CODIGO LIKE'; FrmPesquisa.SQL2:= 'ORDER BY CLI_CODIGO'; //Campos FrmPesquisa.TxtCampoChave := 'CODIGO' ; FrmPesquisa.TxtCampoResp := 'CODIGO' ; FrmPesquisa.EdResp := Self.edCodigoCliente ; end; procedure TfrmEncaminhamentosAuto.PesqNomeClienteClick(Sender: TObject); begin //Chama o form If FrmPesquisa = Nil Then Begin FrmPesquisa := TFrmPesquisa.Create( Self ) ; FrmPesquisa.Show ; End; //Pesquisa de
[delphi-br] Função para validar e-mail
Pessoal, alguém tem alguma função de validação de e-mail? -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[delphi-br] Threads
Pessoal, alguém poderia me mandar um exemplo de como usar Threads, no meu sistema tenho um envio de e-mails em massa, só que o programa fica travado enquanto esse processamento não acaba, e eu gostaria que o usuário pudesse ir usando outras telas do sistema. Me deram a dica de que para isso eu teria que usar criar uma Thread, mas nunca mexi com isso. Agradeço a ajuda de todos. Marcello. -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html