Olá, como vão?
Estou desenvolvendo um projeto em java em necessito integrar uma parte ao sistema feita em delphi.
Eu desenvolvi uma aplicação em delphi utilizando a ferramento QR - QuickReport, onde ele utiliza o mesmo banco de dados da minha aplicação em java.
Agora preciso puxar o delphi para a minha aplicação java, alguem tem uma ideia de como eu poderia fazer isso?
O que você quer dizer com “puxar o delphi para a minha aplicação java”?
Seria iniciar a execução da aplicação Delphi a partir da Java?
Olá dani_bera, tudo bem?
A solução que eu enxergo para seu problema é fazer uma espécie de PIPE entre os programas. Você teria que pegar a saída gerada pelo seu programa em delphi e transmiti-la para seu programa em Java. Tipo, suponhamos que você tenha o seguinte código em C:
#include<stdio.h>
int main(void)
{
printf("Teste com PIPE");
return 0;
}
Agora você tem o seguinte código em Java:
[code]import java.io.IOException;
import java.io.InputStream;
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
int c;
String message="";
String path = "D:\Matheus\Dados\projetos\eclipse\cpp\projeto\Debug\projcpp.exe";//Path de onde se encontra o executável de sua aplicação em C
System.out.println("Entre com uma mensagem: ");
Process proc = Runtime.getRuntime().exec("cmd.exe /C " + path);
InputStream input = proc.getInputStream();//Pega a saída gerada pela sua aplicação
while(true)
{
int c = input.read();
if(c!=-1)
{
message += (char)c;
}else
break;
}
System.out.println("Mensagem gerada em linguagem C: ");
System.out.println(message);
}
}
[/code]
Ao executar esse código Java, você verá a seguinte saída:
Teste com PIPE
Você pode adaptar esse pequeno código para pegar a saída gerada pela sua aplicação em Delphi e enviá-la para sua aplicação em Java.
Bom, espero ter ajudado.
Tinha pensado em fazer um botão na minha aplicação java chamado “Gerar relatórios” para a partir dele abrir a aplicação em delphi.
Neste caso, use o getRuntime().exec ou a classe ProcessBuilder. Você precisará adicionar em sua aplicação Delphi alguns parâmetros de linha de comando, para abrir o relatório correto diretamente.
Então ficou mais fácil ainda. No action do seu botão, coloque somente isso:
Runtime.getRuntime().exec("cmd.exe /C " + PathCompletodaSuaAplicação)
EDIT: Mandei a resposta ao mesmo tempo que você Vini
Obrigada pela ajuda matheuslmota e ViniGodoy.
Vou tentar seguir a sugestão de vocês aqui.
Onde trabalho precisamos disso e implementamos comunicação entre as duas ferramentas utilizando web services. O Java funcionou como nosso servidor de aplicações e alguns arquivos de transformação alimentavam nossos clientDataSet no Delphi.
[quote=marcosalex]Onde trabalho precisamos disso e implementamos comunicação entre as duas ferramentas utilizando web services. O Java funcionou como nosso servidor de aplicações e alguns arquivos de transformação alimentavam nossos clientDataSet no Delphi.
[/quote]
Eu já vi uma solução parecida para integrar um programa em C++ com outro em Java. Tentaram usar JNA de tudo que era forma, mas nunca dava certo. Então a ideia foi usar sockets para ligar as aplicações usando um sistema cliente-servidor, com a aplicação em Java como cliente da aplicação em C++.
É que no meu caso é mais um trabalho de TCC. E como a grade de programação envolvia java e delphi precisei criar um programa que tivesse as duas linguagens juntas.