Clipper On Line • Ver Tópico - Integração entre C e Clipper

Integração entre C e Clipper

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Integração entre C e Clipper

Mensagempor Dr.Microso » 07 Jun 2009 11:02

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.
Editado pela última vez por Dr.Microso em 07 Jun 2009 12:00, num total de 1 vezes
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Re: Integração entre C & Clipper

Mensagempor Maligno » 07 Jun 2009 11:23

Na instalação do Clipper v5.2 há exemplos de funções escritas em C.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Integração entre C e Clipper

Mensagempor Pablo César » 08 Jun 2009 11:16

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 !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: Integração entre C e Clipper

Mensagempor Dr.Microso » 08 Jun 2009 16:49

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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Re: Integração entre C e Clipper

Mensagempor ANDRIL » 08 Jun 2009 18:08

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+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Re: Integração entre C e Clipper

Mensagempor Dr.Microso » 09 Jun 2009 23:44

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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Re: Integração entre C e Clipper

Mensagempor alxsts » 12 Jun 2009 13:31

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
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: Integração entre C e Clipper

Mensagempor vagucs » 17 Jun 2009 13:57

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.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 19 vezes

Re: Integração entre C e Clipper

Mensagempor Dr.Microso » 21 Ago 2009 14:50

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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 13 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro