Unindo Java ao Delphi

9 respostas
D

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?

9 Respostas

V

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?

M

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:
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);
	}
}

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.

D

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.

V

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.

M

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

D

Obrigada pela ajuda matheuslmota e ViniGodoy.
Vou tentar seguir a sugestão de vocês aqui.
:slight_smile:

M

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.

M

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.

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++.

D

É 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.

Criado 19 de junho de 2011
Ultima resposta 19 de jun. de 2011
Respostas 9
Participantes 4