[delphi-br] Variavel String, Delphi e C++
Olá pessoal, Criei uma dll em delphi, nesta dll uma função que retona uma String. Estou querendo acessar esta dll e utilizar o retorno da função no c++, mas estou tendo problemas com o tipo String. Se uso o retorno da função como Integer funciona legal, mas com String não. Vejam o código exemplo: DLL: library MyDllDelphi; uses SysUtils, Classes; {$R *.res} function Triple(N: Integer): String; stdcall; begin Result := 'O triplo do numero informado e ' + IntToStr(N * 3); end; exports Triple; begin end. Programa em C++: void __fastcall TForm1::Button1Click(TObject *Sender) { typedef String (CALLBACK * tpTriple)(int); tpTriple Triple; HINSTANCE vDll; String vRetorno; vDll = LoadLibrary("MyDllDelphi.dll"); try { if(vDll != NULL) { Triple = (tpTriple)GetProcAddress(vDll,"Triple"); if(Triple) vRetorno = Triple(5); else MessageBox(0, "Erro na leitura de dll!" , "Erro", 0+16+8192); } else MessageBox(0, "Dll DNFe.dll não encontrada!" , "Erro", 0+16+8192); } catch (Exception &vExcep) { Application->ShowException(&vExcep); } FreeLibrary(vDll); ShowMessage( vRetorno ); } //-- - Qual seria a melhor forma de retornar uma string que seja compatível com o C++? Talvez eu esteja indo pelo caminho errado, não tenho muito conhecimento com Delphi e C++. Desde já, obrigado!
RES: [delphi-br] sistema muito doido
Olá, Tive problema parecido, no meu caso era problema de arredondamento de valores, na tela apresentava o valor arredondado e na comparação não estava arredondando os valors. Verifique se não é este seu caso tbm. Att, Tiago De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Eduardo Melo Enviada em: domingo, 15 de novembro de 2009 15:50 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] sistema muito doido Ola Pessoal, Estou com um problema muito doido para verificar se um valor de conta a receber é maior que o valor recebido. Eu tenho uma conta de R$ 9,60 para receber e se verifico se o campo que recebe este valor é maior que o valor a receber ou seja também os 9,60, fica definido como valor maior. Se converter o floattostr deste valor fica como 9,6 ai fiz teste só com edits em outros executavel e apresentava como igual, mas no sistema esta ambos como 9,60 e diz que 9,60 é maior que 9,60, muito doido, alguem já viu este problema? Outra coisa muito estranho que eu deixar o valor como 9,50 ele fica normal, mas se coloco o valor como 9,60, 9,70, 9,80, 9,90 ele diz que é maior, o que posso fazer? -- Att Eduardo Melo 4º Sistemas de Informação - Bacharelado www.canaldevenda.com www.meloshospedagem.com.br -- Att Eduardo Melo 4º Sistemas de Informação - Bacharelado www.canaldevenda.com www.meloshospedagem.com.br [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: RES: [delphi-br] Comando com mais de um INSERT no TSQLQuery
Olá, Obrigado pela dica... fiz algo parecido com a idéia que vc sugeriu. E tbm utilizei o conceito de transações como o Rubem Nascimento sugeriu.. e funcionou o como eu queria... Obrigado... De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Eduardo Gushiken Enviada em: quinta-feira, 26 de fevereiro de 2009 23:34 Para: delphi-br@yahoogrupos.com.br Assunto: Res: RES: [delphi-br] Comando com mais de um INSERT no TSQLQuery Oi Tiago, Uma idéia que funciona, apesar de não ter um bom desempenho, é reescrever o SQL.Text do TSQLQuery para cada INSERT. Você poderia pegar o arquivo de script com os INSERT's e colocar as linhas em uma variável, depois executa o SQL e passa para a próxima linha do script. Mais ou menos assim: while not Arq.EOF then begin SQLQuery1.Close; SQLQuery1.SQL.Text := VARIAVEL_INSERT; SQLQuery1.ExecSQL(); Arq.Next // Aqui vai o código para passar para a próxima linha do arquivo, mas eu não me // lembro exatamente qual é end; Eu acho que essa ainda não é a melhor solução, mas eu sei que é melhor que ter um SQLQuery1000. O código acima deve ter algum erro na estrutura, mas é só para ter uma idéia do que eu quis dizer. []'s Eduardo M. O. Gushiken ____ De: Tiago F. Zacchi mailto:tiago_zacchi%40yahoo.com.br> > Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> Enviadas: Quinta-feira, 26 de Fevereiro de 2009 21:36:50 Assunto: RES: [delphi-br] Comando com mais de um INSERT no TSQLQuery Ok... Então se eu precisar executar um arquivo SQL com 1.000 instruções de INSERT por exemplo teria que fazer uma a uma mesmo... não tem a possibilidade de executar este arquivo SQL através do Delphi? Obrigado... Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - www.avgbrasil.com.br Versão: 8.0.237 / Banco de dados de vírus: 270.11.3/1975 - Data de Lançamento: 02/27/09 07:05:00 [As partes desta mensagem que não continham texto foram removidas]
RES: [delphi-br] Comando com mais de um INSERT no TSQLQuery
Ok... Então se eu precisar executar um arquivo SQL com 1.000 instruções de INSERT por exemplo teria que fazer uma a uma mesmo... não tem a possibilidade de executar este arquivo SQL através do Delphi? Obrigado... -Mensagem original- De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Rubem Nascimento da Rocha Enviada em: quinta-feira, 26 de fevereiro de 2009 18:00 Para: delphi-br Assunto: RE: [delphi-br] Comando com mais de um INSERT no TSQLQuery Prioridade: Alta Até onde me consta, até componentes que se prestam a executar scripts em bancos de dados fazem isso, ou seja, executam os comandos SQL um por vez. Sugiro que adote essa abordagem. E ainda, faça uso de transações, coisa que pelo código ilustrado vc não está fazendo uso! Boa sorte. Sds. > To: delphi-br@yahoogrupos.com.br > From: tiago_zac...@yahoo.com.br > Date: Thu, 26 Feb 2009 17:57:36 -0300 > Subject: [delphi-br] Comando com mais de um INSERT no TSQLQuery > > Olá pessoal, > > > > Estou com problemas na utilização do TSQLQuery. > > > > Estou tentanto executar dois INSERT em uma tabela do banco de > > dados Firebird da seguinte forma: > > > > vSQL = INSERT INTO LogErro (LogDatImp) VALUES > > (CURRENT_TIMESTAMP);; > > > > vSQL += INSERT INTO LogErro (LogDatImp) VALUES > > (CURRENT_TIMESTAMP);; > > > > qryLogErro.Close; > > > > qryLogErro.SQL.Clear; > > > > qryLogErro.SQL.Add(vSQL); > > > > qryLogErro.ExecSQL; > > > > Mas esta dando o seguinte erro : > > > > General SQL error. > > > > Dynamic SQL error. > > > > SQL error code = -104 > > > > Token Unknown line 1, cilumn 61 > > > > INSERT. > > > > Como posso resolver esse problema? Se eu executar um INSERT por vez funciona > > legal mas se executar mais de um da o erro. Preciso executar mais de um por > > q na verdade estou importando um arquivo de texto com vários comandos INSERT > > nele para atualizar uma tabela do banco... > > > > Obrigado, > > > > Tiago. > _ Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver offline. Conheça o MSN Mobile! http://mobile.live.com/signup/signup2.aspx?lc=pt-br -- < FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM > Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - www.avgbrasil.com.br Versão: 8.0.237 / Banco de dados de vírus: 270.11.3/1973 - Data de Lançamento: 02/26/09 07:03:00
[delphi-br] Comando com mais de um INSERT no TSQLQuery
Olá pessoal, Estou com problemas na utilização do TSQLQuery. Estou tentanto executar dois INSERT em uma tabela do banco de dados Firebird da seguinte forma: vSQL = INSERT INTO LogErro (LogDatImp) VALUES (CURRENT_TIMESTAMP);; vSQL += INSERT INTO LogErro (LogDatImp) VALUES (CURRENT_TIMESTAMP);; qryLogErro.Close; qryLogErro.SQL.Clear; qryLogErro.SQL.Add(vSQL); qryLogErro.ExecSQL; Mas esta dando o seguinte erro : General SQL error. Dynamic SQL error. SQL error code = -104 Token Unknown line 1, cilumn 61 INSERT. Como posso resolver esse problema? Se eu executar um INSERT por vez funciona legal mas se executar mais de um da o erro. Preciso executar mais de um por q na verdade estou importando um arquivo de texto com vários comandos INSERT nele para atualizar uma tabela do banco... Obrigado, Tiago. [As partes desta mensagem que não continham texto foram removidas]