|
Hola comunidad, tengo la siguiente consulta y les
agradeceria un monton si me ayudan, trabajo con
Clipper 5.2d, Blinker 3.3 y bajo una red Novell.
lLa pregunta es puedo utilizar punteros en clipper
como en Turbo C 1.0, tengo una funcion hecha en C,
resulta que mi programa en C lo compile y este Obj
lo agregue a mi aplicacion en Novell pero al momento de
linkearlo (crear el Exe) no me reconoce el Obj. Mi
funcion utiliza operaciones de punto flotante
alguien
me puede explicar como hacer que se integren estos 2
programas, ya me aconsejaron que utilice el fivewin
pero necesito hacerlo con Clipper 5.2d nada mas con
ese.
En vista que llevo algun tiempo si poder resolver el
problema estoy transcribiendo el codigo de C a
Clipper
pero necesito trabajar con punteros ya que la
funcion
de C lo hace
Espero que alguien me pueda ayudar con mi problema
Aqui le envio la funcion de C.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <extend.h>
#define uthinyb(s) ((s&0xf0)>>4)&(0x0f)
#define utlonyb(s) (s&0x0f)
#define NULO 0
typedef unsigned char byt;
/*************************************************************
funcion Hex_to_Hex_Paq: Convierte una cadena
Hexadecimal a Hexadecimal empaquetado
>**************************************************************/
extern "C" CLIPPER HextoPaq(byt *cadena_Dec, byt
*cadena_HEX,int num_dig_dec)
{
byte hiHEX, loHEX; int i;
int num_bytesHEX,flag=1;
float tmp;
byte Num_Ascii;
tmp = (float)((num_dig_dec/2.0) + 0.5);
if ( num_dig_dec/2 == (int)tmp)
num_bytesHEX = num_dig_dec/2;
else {
num_bytesHEX = (num_dig_dec/2)+1; flag = 0;
}
for (i=0; i<num_bytesHEX; i++)
{
Num_Ascii = *(cadena_Dec+2*i);
if (Num_Ascii >= 48 && Num_Ascii <= 57)
Num_Ascii = Num_Ascii - 48;
if (Num_Ascii >= 65 && Num_Ascii <= 70)
Num_Ascii = Num_Ascii - 55;
if (Num_Ascii >= 97 && Num_Ascii <= 102)
Num_Ascii = Num_Ascii - 87;
hiHEX = ((Num_Ascii)<<4)&(0xF0);
if ( (i != (num_bytesHEX-1)) || (flag==1) )
Num_Ascii = *(cadena_Dec+2*i+1);
else
Num_Ascii = *(cadena_HEX+i) ;
if (Num_Ascii >= 48 && Num_Ascii <= 57)
Num_Ascii = Num_Ascii - 48;
if (Num_Ascii >= 65 && Num_Ascii <= 70)
Num_Ascii = Num_Ascii - 55;
if (Num_Ascii >= 97 && Num_Ascii <= 102)
Num_Ascii = Num_Ascii - 87;
loHEX = ((Num_Ascii) & (0x0F));
*(cadena_HEX+i) = hiHEX | loHEX;
}
}
> >
void main(void)
{
byt temp[6], temp1[6];
memset(temp, 0x00, sizeof(temp));
memset(temp1, 0x00, sizeof(temp1));
memcpy(temp, "CF08", 4);
/* Convierte Cadena Ascii Hex a Hex Pack */
HextoPaq(temp, temp1, 4);
}
|