Page 1 of 1

Cómo compilar código en C? (SOLUCIONADO)

Posted: Wed Sep 02, 2015 9:12 pm
by Armando
Amigos:

Para los maestros en C (Yo soy ñoño :oops: ), tengo el siguiente código en C#

Code: Select all

using System.Text.RegularExpressions;
using System;
using System.Globalization;

public class RFC
    {
        public static bool EsRFCValido(string RFC)
        {
            if (PersonaFisica_RFC(RFC) && ValidarUltimaLetraRFC(RFC) && ValidarFechaRFC(RFC))
                return true;

            if (General_RFC(RFC) && ValidarUltimaLetraRFC(RFC) && ValidarFechaRFC(RFC))
                return true;

            return false;
        }

        private static bool PersonaFisica_RFC(string RFC)
        {
            try
            {
                if (RFC.Trim().Length == 13 || RFC.Trim().Length == 12)
                {
                    string pattern = "^[A-Z&]{3,4}(\\d{6})(([A-Z0-9]){3})?$";
                    Match RFCMatch = Regex.Match(RFC, pattern);
                    if (RFC != string.Empty)
                    {
                        if (!RFCMatch.Success)
                            return false;
                    }
                }
                else
                    return false;

                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(string.Format("ExpRegulares.PersonaFisica_RFC: {0}", ex.Message));
                return false;
            }
        }

        private static bool General_RFC(string RFC)
        {
            try
            {
                string pattern = "^([A-Z\\s]{3,4})\\d{6}(([A-Z\\w]|[0-9]){3})$";
                Match RFCMatch = Regex.Match(RFC.Trim(), pattern);
                if (RFC.Trim() != string.Empty)
                {
                    if (!RFCMatch.Success)
                        return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(string.Format("ExpRegulares.General_RFC: {0}", ex.Message));
                return false;
            }
        }

        private static bool ValidarUltimaLetraRFC(string RFC)
        {
            try
            {
                if (RFC.EndsWith("A") || RFC.EndsWith("0") || RFC.EndsWith("1") || RFC.EndsWith("2") || RFC.EndsWith("3") || RFC.EndsWith("4") || RFC.EndsWith("5")
                    || RFC.EndsWith("6") || RFC.EndsWith("7") || RFC.EndsWith("8") || RFC.EndsWith("9"))
                    return true;
                else
                    return false;
            }
            catch (Exception ex)
            {
                Console.WriteLine(string.Format("ExpRegulares.ValidarUltimaLetraRFC: {0}", ex.Message));
                return false;
            }
        }

        private static bool ValidarFechaRFC(string RFC)
        {
            string fecha = string.Empty;
            bool esFecha = false;
            DateTime resultado;

            fecha = RFC.Substring(RFC.Length - 9, 6);
            esFecha = DateTime.TryParseExact(fecha, "yyMMdd", null, DateTimeStyles.None, out resultado);

            return esFecha;
        }
    }
Como puedo compilarlo dentro de mi aplicación hecha con FWH y xHarbour?
Necesita cambios ?

Saludos

Re: Cómo compilar código en C?

Posted: Thu Sep 03, 2015 8:39 am
by Antonio Linares
Y por qué lo necesitas en C ?

Lo puedes pasar a Harbour, no es dificil de entender :-)

Re: Cómo compilar código en C?

Posted: Thu Sep 03, 2015 1:41 pm
by armando.lagunas
Tocayo:

no se si estoy en lo correcto pero esto te puede ayudar, yo coloco programas en c de esta forma dentro de un prg en xHarbour

Code: Select all


#pragma BEGINDUMP

   // aqui el programa en C
void * hb_parns( int i )
{
   return 0;
}
  // fin de programa en C

#pragma ENDDUMP

 
saludos

Re: Cómo compilar código en C?

Posted: Thu Sep 03, 2015 2:40 pm
by Armando
Antonio:

No es precisamente que lo necesite en C, solo que el código que encontré
está en C y yo de C solo se que NO C :D , Si alguna alma caritativa lo
convierte a [x]Harbour, estaré muy agradecido.

Tocayo:
Gracias por el aporte, lo intentaré., a ver si pasa el código así como esta.
Saludos a todos

Re: Cómo compilar código en C?

Posted: Thu Sep 03, 2015 4:37 pm
by benjiben143
Hola armando

buenos dias

ay va la conversion, nomas faltaria validar que los numeros sean fecha estan en cfecha

Code: Select all

Function main()
Local cRfc:="visaf741020tu2"

   
   
    ?  valrfc(crfc)
    
    
    
Return Nil



Function Valrfc(xrfc)
Local dev:=.f.
local cletras:=""
local cfecha:=""
local chomoclave:=""

xrfc:=upper(alltrim(xrfc))
// validar el tamano   12 persona moral   13 persona fisica
if !(len(xrfc)>=12 .and. len(xrfc)<=13)
    Return .f.
endif


//fso0311035u8
//camb720214b32

if len(xrfc)=12    // validar persona moral
   cletras:=substr(xrfc,1,3)
   cfecha :=substr(xrfc,4,6)
   chomoclave:=substr(xrfc,10,3)
   if !lletras(cletras)
       return .f.
   endif
   if !lnumeros(cfecha)
       return .f.
   endif
   
    if !lmixto(chomoclave)
       return .f.
   endif
   
      
   
   
   

else               // validar persona fisica
   cletras:=substr(xrfc,1,4)
   cfecha :=substr(xrfc,5,6)
   chomoclave:=substr(xrfc,11,3)
   if !lletras(cletras)
       return .f.
   endif
   if !lnumeros(cfecha)
       return .f.
   endif
   
   if !lmixto(chomoclave)
       return .f.
   endif
   
   

endif



return .t.



Function lletras(xtexto)
local i
local dev:=.t.

for i:=1 to len(xtexto)
    IF asc(substr(xtexto,i,1))>=65 .and. asc(substr(xtexto,i,1))<=90
    else
       dev:=.f.
    endif
next i
Return dev


return .t.


Function lnumeros(xtexto)
local i
local dev:=.t.
for i:=1 to len(xtexto)
    IF asc(substr(xtexto,i,1))>=48 .and. asc(substr(xtexto,i,1))<=57
    else
       dev:=.f.
    endif
next i
Return dev


Function lmixto(xtexto)
local i
local dev:=.t.
for i:=1 to len(xtexto)
    IF (asc(substr(xtexto,i,1))>=48 .and. asc(substr(xtexto,i,1))<=57) .or. (asc(substr(xtexto,i,1))>=65 .and. asc(substr(xtexto,i,1))<=90)
    else
       dev:=.f.
    endif
next i



return dev


 

Re: Cómo compilar código en C?

Posted: Thu Sep 03, 2015 5:16 pm
by Armando
Benji:

Muy agradecido, voy a probarla, ya te contaré el resultado.

Lo de la fecha es muy sencillo, hasta yo lo puedo hacer :wink: , también
ya tengo la validación del dígito verificador.

Saludos

Re: Cómo compilar código en C?

Posted: Thu Sep 03, 2015 6:45 pm
by Armando
Benji:

Muchas gracias, probé tu código y funciona bien con xHarbour, es el que uso,
la validación de la fecha no es problema.

Muchas gracias nuevamente, saludos a todo el foro

Re: Cómo compilar código en C? (SOLUCIONADO)

Posted: Thu Sep 03, 2015 9:29 pm
by xmanuel
Harbour soporta expresiones regulares.
Pasar ese código sin casi modificaciones es facil. Podeis mirar regex.prg y regex2.prg de la carpeta tests de harbour :D