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

Post Reply
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

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

Post 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
Last edited by Armando on Thu Sep 03, 2015 6:46 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post by Antonio Linares »

Y por qué lo necesitas en C ?

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

Antonio Linares
www.fivetechsoft.com
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

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

Post 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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

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

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

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

Post 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


 
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

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

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

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

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

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

Post 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
______________________________________________________________________________
Sevilla - Andalucía
Post Reply