Clipper On Line • Ver Tópico - Integração entre C e Clipper
Página 1 de 1

Integração entre C e Clipper

MensagemEnviado: 07 Jun 2009 11:02
por Dr.Microso
Senhores saudações!

Não raro, encontramos na NET uma vasta coleção de pequenos mas valiosos executáveis em C.
Me refiro em especial aos que avaliam condições do hardware ou sistema operacional, com retorno simples ao MS-DOS: 1 ou 0 (.F. ou .T.).
Muitos destes não existem em bibliotecas (ou possuem interface) para o Clipper.

Se tenho uma pequena instrução em C que avalia uma condição qualquer do OS e retorna um valor ao MS-DOS (via "printf" por exemplo), como posso modificá-la para que retorne o mesmo valor diretamente a uma rotina em Clipper?

Alguém poderia postar exemplos de código (antes e depois)?

Grato!

Nota de Moderação:
por Pablo César: O tópico foi movido da seção Clipper por tratar específicamente de outra linguagem.

Re: Integração entre C & Clipper

MensagemEnviado: 07 Jun 2009 11:23
por Maligno
Na instalação do Clipper v5.2 há exemplos de funções escritas em C.

Integração entre C e Clipper

MensagemEnviado: 08 Jun 2009 11:16
por Pablo César
retorna um valor ao MS-DOS (via "printf" por exemplo), como posso modificá-la para que retorne o mesmo valor diretamente a uma rotina em Clipper?
Dependendo da instrução a serem utilizadas até dariam para integrar diretamente através de LIB com o Clipper. Caso de não ser possível, teria duas opções, criando um executável que de dentro da aplicação Clipper possa ser executada. Claro que os resultados obtidos pela aplicação/C deverá gerar um arquivo texto (por exemplo) a fim de que na aplicação/Clipper possa ler-la e processá-la. A outra opção, é também através de arquivo intermediário (arquivo texto, sendo gerado pela aplicação/C) mas sendo enjambrado dentro de uma LIB. Esse recurso você poderá obter como exemplo e ler todo o procedimento para esse enjambramento ou embutimento (segundo autor) no pacote da WAPI do Maligno: http://pub.buzinello.com/xbase/clipper/ ... _v1.03.zip (veja na pasta ..\wapi_v1.03\WAPI\LIB\WAPI2LIB todo o procedimento).

Espero que você consiga compartilhar aqui no fórum todo benefício e contribuição que possa adicionar as aplicações Clipper !

Re: Integração entre C e Clipper

MensagemEnviado: 08 Jun 2009 16:49
por Dr.Microso
Pablo, saudações!

Suas sugestões procedem e são úteis!
Vou tentar exemplificar melhor meu intento através de uma codificação extremamente básica...

CASO
MALIGNO é o nome de um executável (e seu fonte em C).
O programa já mostrou-se lógico e seu retorno é impresso no PROMPT, todavia, quero que ele o redirecione para a rotina em Clipper (PABLO.PRG) que fará sua chamada. Naturalmente, pretendo alterar, compilar e adicionar MALIGNO.OBJ a minha LIB.
PABLO não passa parametros para MALIGNO. Este só é invocado pelo primeiro.

> código Clipper: PABLO.PRG
 *----------------------------------------------------
LOCAL cA
*----------------------------------------------------
cls
cA:=Maligno()
DispOutAT(10, 10, cA, "GR+/N"); Inke(0)
retu
*------------------------------------------the end---


Agora a listagem do fonte em C como encontrado: MALIGNO.C

 #include<stdio.h>

void main()

{
//declaração da variável local
   char str                                                                     
//atribuíndo valor a variável
   str="Faça e mentalize o bem, que a felicidade vem!"   
//imprimindo a variável
   printf(str=%c\n", str)                                                       
}

As questões são...

> como alterar o código acima para ser utilizado por uma chamada do Clipper retornando o valor somente a ele?
> a variável em questão é char. E como ficaria este retorno se ela fosse do tipo float, double ou int?

Grato!

Re: Integração entre C e Clipper

MensagemEnviado: 08 Jun 2009 18:08
por ANDRIL
Lembre-se que para devolver um resultado do C para o Clipper vc devera usar os comandos de retorno de funcao do C.

Char     -  _retc(char*)
Date     -  _retds(char*)
Logical  -  _retl(int)
numeric -  _retni(int)
numeric -  _retnl(long)
numeric -  _retnd(double)
              _ret()
              _retclen(char,int)


Para compilar um codigo C compativel com Clipper, usando o compilador Microsoft C 5.1, devera conter os seguintes parametros:

CL /c /AL /FPa /Gs /Oalt /Zl <nome_do_arquivo>.c


Para linkagem do Clipper com o C

RTLINK FI <arq_obj_clipper>,<arq_obj_c> LIB CLIPPER, EXTEND, LLIBCA

Quanto a sua função tente o seguinte:

 #include<stdio.h>

//void main() 

{
//declaração da variável local
   char str;                                                                     
//atribuíndo valor a variável
   str="Faça e mentalize o bem, que a felicidade vem!";   
//imprimindo a variável
//   printf(str=%c\n", str)                                                       
   _retc(str);
}



Não sei se vai te ajudar ou dar uma luz, ja vou dizendo, nao programo em C, alias nao sei quase nada dessa linguagem, mais espero que lhe ajude.

Ate+

Re: Integração entre C e Clipper

MensagemEnviado: 09 Jun 2009 23:44
por Dr.Microso
Prezado Andril, saudações!

Sim, ajudou! Com certeza é uma luz e que Luz.
Só está faltando algumas pequenas implementações que estou ainda pesquisando!

Muito grato!

Re: Integração entre C e Clipper

MensagemEnviado: 12 Jun 2009 13:31
por alxsts
Olá amigos,

existe um livro (naturalmente muito antigo - 1991), que como sugere o título, trata do assunto. Seguem os dados:

Título : Clipper com C Sem Mistérios
Autores: Carlos Augusto P. Gomes e Antonio Carlos Barbosa
Editora : Érica
ISBN : 85-7194-051-7

[]´s
AlxSts

Re: Integração entre C e Clipper

MensagemEnviado: 17 Jun 2009 13:57
por vagucs
uma dica, a 10 anos atras eu fiz uma lib grafica em C e ASM para clipper, era para criar jogos em clipper, ficou rapida pacas, so roda 320x200, ela está em meu site com codigo fonte completo, ela tem tudo la, as interfaces para retornar valores pro clipper e tudo mais, acho que vai valer como excelente fonte de consulta.

Na documentação NG do clipper você tem la todas as rotinas para criar interfaces em C para clipper.

Re: Integração entre C e Clipper

MensagemEnviado: 21 Ago 2009 14:50
por Dr.Microso
Colegas, salve!

Consegui sanar minhas dúvidas...
Agradeço a todos que aqui postaram, pois todas as sugestões procederam, foram utéis e colocadas em prática.
Em especial aos colegas Wagner e Alxsts, cuja indicação do livro Clipper com C Sem Mistérios (fiz aquisição) foi oportuna e decisiva na compreensão da matéria no curtíssimo tempo que tinha.

Segue um link muito interessante com muitos exemplos (download) para estudo...
Os fontes possuem aplicação diversa e foram preparados para serem chamados por uma função em Clipper, retornando um valor a mesma.
Na parte direita superior da página atente para um outro link: Linking C And Clipper... que pode ser útil tb.

http://www.ousob.com/c_code/cmenu.php

Viva o CA (Código Arte) Clipper e suas extensibilidades!