Aplicativo multi-sistema operacional

Delphi

28/06/2005

Caros, supondo que eu tenha 2 aplicativos: 1 compilado no windows
(Delphi) e outro no linux (kylux). Gostaria de saber se tem como fazer um terceiro aplicativo que de acordo com o sistema operacional (linux/windows) chame o aplicativo correspondente?
Alguém tem alguma ideia :idea: aceito qualquer tipo de sugestão...


Desde ja grato pela atenção...


Anarquistaoi

Anarquistaoi

Curtidas 0

Respostas

Nildo

Nildo

28/06/2005

Talvez você possa criar uma aplicação CLX para fazer isso (mas não sei como)


GOSTEI 0
Adriano Santos

Adriano Santos

28/06/2005

Meu caro :D , terá que criar um progrma CLX como disse nosso amigo [b:bf194a92e5]nildo[/b:bf194a92e5].

Entre no delphi e crie um novo projeto:
Flie >> New >> CLX Application.

Vai perceber que só ficarão disponíveis componentes para ambos os SOs, mas a programação é a mesma com exceção de APIs que no Linux funciona diferente, se não me engano não existem apis. O que vc deve pastar um pouco são nas chamadas aos executáveis porque o sistema de pastas é um pouco diferente do Windows.

Sinceramente não acredito que seja muito difícil, depende do nível de complexidade do seu exe.


GOSTEI 0
Cabelo

Cabelo

28/06/2005

Meu caro :D , terá que criar um progrma CLX como disse nosso amigo [b:2172ddcf64]nildo[/b:2172ddcf64]. Entre no delphi e crie um novo projeto: Flie >> New >> CLX Application. Vai perceber que só ficarão disponíveis componentes para ambos os SOs, mas a programação é a mesma com exceção de APIs que no Linux funciona diferente, se não me engano não existem apis. O que vc deve pastar um pouco são nas chamadas aos executáveis porque o sistema de pastas é um pouco diferente do Windows. Sinceramente não acredito que seja muito difícil, depende do nível de complexidade do seu exe.


Colega.. você deve criar exatamento como os colegas Nildo e arsantos postaram.. Não existem API´s em Linux, já que é prioritário Microsoft, mas se você precisar muito de usar API´s, você pode resolver seu problema usando diretivas de compilação.. na secção uses declre assim por exemplo :

uses {$IFDEF LINUX}
Xlib,
{$ENDIF}
{$IFDEF MSWINDOWS}
Windows, Messages, ShellAPI, Types, JPEG, DateUtils,
{$ENDIF}

em seguida declare as UNITs que o próprio delphi coloca a sua disposição, repare que dependendo de qual compilador você usar, será usado os comando corretamente, só não se esqueça de declarar as diretivas na hora de usar os comandos destas UNITs prioritárias de somente um SO.

espero te ajudado..


GOSTEI 0
Rjun

Rjun

28/06/2005

Essa terceira aplicação teria q rodar tanto em windows como em linux. E dependendo de qual SO chamar uma ou outra aplicação? Acho que não tem como um mesmo aplicativo rodar no Linux e no Windows.


GOSTEI 0
Nildo

Nildo

28/06/2005

Acho que não tem como um mesmo aplicativo rodar no Linux e no Windows.


CLX é para este fim


GOSTEI 0
Rjun

Rjun

28/06/2005

Mas você não teria que compilar ele no Linux para rodar no Linux. Se você compilar no Delphi ele não roda no Linux. Roda?


GOSTEI 0
Nildo

Nildo

28/06/2005

Mas você não teria que compilar ele no Linux para rodar no Linux. Se você compilar no Delphi ele não roda no Linux. Roda?


Se eu nao me engano roda sim.
Senão não teria o porque existir o Delphi e Kylix em sistemas separados


GOSTEI 0
Rjun

Rjun

28/06/2005

Eu acho que não roda, e é esse o motivo de existirem o Delphi e Kylix em sistemas separados. Se rodasse, bastava ter só o Delphi. Bom, pelo menos é o que acho.


GOSTEI 0
Nildo

Nildo

28/06/2005

Segundo o Help do delphi:

Choose File|New|CLX Application to create a new project group with a single cross-platform application in it. [b:dc5b1a50f8]You can use CLX objects to create applications that will run on Windows or Linux platforms[/b:dc5b1a50f8]. Form files associated with CLX applications have an xfm extension.


Então creio que roda sim. Porém não tem as mesmas facilidades do Kylix ou do próprio Aplicativo para Windows. Deve ser apenas coisas basicas.


GOSTEI 0
Adriano Santos

Adriano Santos

28/06/2005

[quote:550190bf94=´Rjun´]Mas você não teria que compilar ele no Linux para rodar no Linux. Se você compilar no Delphi ele não roda no Linux. Roda?


Se eu nao me engano roda sim.
Senão não teria o porque existir o Delphi e Kylix em sistemas separados[/quote:550190bf94]


O Nildo está correto em sua afirmação.
O sistema roda sim em Linux, ou pelo menos é pra rodar sem nenhum problema. Mesmo compilando no Delphi.

Nunca testei, mas é uma boa hora de tentar. :lol:


GOSTEI 0
Rjun

Rjun

28/06/2005

Bom, se alguem puder testar e postar o resultado, ficarei grato. Se funcionar, essa eu realmente não sabia.


GOSTEI 0
Anarquistaoi

Anarquistaoi

28/06/2005

Vou fazer o teste, mas como eu faço pra executar o aplicativo no linux?? Qual comando eu coloco??


GOSTEI 0
Beppe

Beppe

28/06/2005

Como os demais, eu tbm não testei, mas tenho uma visão diferente. Só achismo mesmo...

CLX é para programas [i:e3da57c1a1]source-compatible[/i:e3da57c1a1], isto é, precisa recompilar no Kylix. Delphi gera apenas .exe, este formato só roda no Linux com a ajuda do Wine(com restrições).

Para que se possa recompilar no Linux, não se pode usar units do Win32, como Windows, Messages, CommCtrl, ShellAPI, ActiveX, etc...


GOSTEI 0
Weber

Weber

28/06/2005

Beep está totalmente correto, os binários windows são totalmente diferentes dos binarios linux.
Portando um programa Windows não roda em linux nem a pau, a não ser por wine ou outro programa semelhante.

Compilando no Delphi >> Roda em Windows nao roda em Linux
Compilando no Kylix >> Roda em Linux não roda em Windows.

Assim funciona para todos os aplicativos compilados, sistemas em C tem que ser compilados para uma ou outra plataforma, já no Java eu acredito que o mesmo aplicativo rode tanto em um quando em outro já que não é compilado.


GOSTEI 0
Adriano Santos

Adriano Santos

28/06/2005

Caramba,

Não tinha pensado nisso e agora parando para analisar, o que o [b:8016ce2176]Beep [/b:8016ce2176]e o [b:8016ce2176]weber [/b:8016ce2176]disseram tem fundamento. Os binários de um SO e de outro são completamente diferentes.

Quanto ao java [b:8016ce2176]weber[/b:8016ce2176], tenho minhas dúvidas. Estudei um pouco de java o ano passado e pouco que li me leva a crer que, por causa das diversas máquinas virtuais desenvolvidas pela sun, uma para cada SO, deva ter alguma diferença entre um programa para Solaris, Linux ou Windows por exemplo, mas.....isso é uma outra história não é mesmo? :D


GOSTEI 0
Beppe

Beppe

28/06/2005

Bom, eu falei que achava, mas eu tinha certeza... :twisted: :lol: :oops:


GOSTEI 0
Nildo

Nildo

28/06/2005

Eu achava que o CLX precisava de algum interpretador, tipo uma VBRUN.DLL da vida. Dai rodaria nas duas plataformas. rs :oops: minha cabeça da explodindo hehehe.. preciso de fériasssssssss


GOSTEI 0
Adriano Santos

Adriano Santos

28/06/2005

Eu também nildo, acho que to ficando bem loko isso sim.

valeu por excluir os posts duplicados ai e mais uma vez desculpas a galera.


GOSTEI 0
Cabelo

Cabelo

28/06/2005

Só complementando..

Uma aplicação compilada em Delphi 7 .CLX, não roda em linux, até por que não existe este tipo de arquivo no linux .exe, e sim arquivos .rpm, gerado pelo kylyx, outra coisa é que o .clx é desenvolvido com as uNITs que poderão ser usadas no kylyz, portanto a portabilidade é verdadeira.

Para fazer um programa rodar tanto em linux quanto em windows, é necessário ter o delphi 7 e kylyx.. e compilar pra cada finalidade..

O .CLX não é um interpretador, é compilador, assim como a VCL, só que não possui as chamadas a API´s, entre outras..


GOSTEI 0
Beppe

Beppe

28/06/2005

O CLX serve como camada de portabilidade. São umas .dll´s ou .so´s que se sobrepoem ao sistema nativo de janelas. Com ela se alcança portabilidade pq a interface(API) é a mesma em todos os ambientes suportados.


GOSTEI 0
Kitsystem

Kitsystem

28/06/2005

Vc devera usar a CLX e compilar no Delphi e Kylix como informaram acima.

Referente a sua pergunta criar um sistema que chame a aplicacao em questão e ela ser o mesmo EXE, vc deve compilar em Windows(Delphi) e fazer ela rodar sobre o Wine para rodar no Linux que no fato é o que a IDE do Kylix faz, o aplicativo compilado é nativo Linux mas a IDE do Kylix é emulada.


GOSTEI 0
Leolopes79

Leolopes79

28/06/2005

Sem querer ser redundante... VCL e CLX é basicamente a mesma coisa: bliblioteca de componentes. A diferença é que a CLX é cross-platafom, ou seja, um projeto CLX pode ser compilado sem mudar uma linha de código no Kylix ou no Delphi, enquanto um projeto VCL só roda no Windows.
Quando gerados, os executáveis têm binários compatíveis com o SO hospedeiro... daí, se for Windows, gera um PROJETO.EXE (executável padrão do Windows) + bibliotecas auxiliares caso necessário, se for Linux gera um PROJETO (no Linux é comum não ter extensão) + bibliotecas auxiliares caso necessário (geralmente arquivos .SO).
Pra testar é mole, sabe o ´Alô mundo!´, cria um projeto CLX e monta, depois compila no Delphi e no Kylix e observa os arquivos gerados.
Uma outra coisa, o Kylix é o próprio Delphi, rodando sobre o Wine + uma versão antiga da QT... isso quer dizer que compartilham a mesma IDE, mudando apenas o compilador.


GOSTEI 0
POSTAR