Ver Mensaje Individual
  #7  
Antiguo 20-02-2013
KroSaver KroSaver is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 20
Reputación: 0
KroSaver Va por buen camino
Bueno esque usar funciones propias no me mola las prefiero hacer yo y meter cuanta menos basura posible en el exe final.

el codigo de la funcion en c++ la hicimos con mi compañero TR31N0RD:
Código:
#include <stdio.h>
#include <windows.h>

bool EncontrarCadena(char *Cadena1, char *Cadena2)
{
    
    char *cadena1=(char*)malloc(strlen(Cadena1));        memset(cadena1,0,strlen(Cadena1));        strcat(cadena1,Cadena1);
    char *cadena2=(char*)malloc(strlen(Cadena2));        memset(cadena2,0,strlen(Cadena2));        strcat(cadena2,Cadena2);

    if(strlen(Cadena1) < strlen(Cadena2)){return false;} //como la cadena2 es mayor que la cadena1 es imposible que la cadena 1 contenga a la cadena2
    int c=0;
    int i=0;
    bool validate=false;
    
    //Convertimos a minusculas
    for(c=0;cadena1[c]!='\0';c++)
    {
        if((cadena1[c]>=65)&&(cadena1[c]<=90)){cadena1[c]+=32;}
    }
    
    for(c=0;cadena2[c]!='\0';c++)
    {
        if((cadena2[c]>=65)&&(cadena2[c]<=90)){cadena2[c]+=32;}
    }
    

    
    while(cadena1[c]!='\0')  // hacemos el recorrido sobre toda la cadena1 para buscar que contiene la cadena2
    {
        if(cadena1[c]==cadena2[0]) //si el caracter comparado es igual al primer caracter de cadena2 buscamos el resto de caracteres 
        {
            i=1; //como ya el primer caracter es igual pasamos al segundo caracter que esta en la posicion 1
            while(Cadena2[i]!='\0') //Buscamos el resto de caracteres
            {
                if(cadena1[c+i]!=cadena2[i]){break;} //si son diferentes los caracteres salimos
                i++;            
            }

            if(cadena2[i]=='\0'){return true;}    
        }

    c++;
    }
    return false;
    
}

int main(int argc, char *argv[]) {
    
    char *Cadena1 = "asdjaksxnkasjLoldsfhsdncmsd";
    char *Cadena2 = "loL";
    
    if(EncontrarCadena(Cadena1,Cadena2)==true)
    {
        printf("Cadena encontrada!\n");
    }
    else
    {
        printf("Cadena no encontrada!\n");
    }
    system("PAUSE");
    return 0;
}
Prove lo que respondio dec pero da error en esa linea del type que la verdad en delphi algunos errores no loes explica el compilador.

gracias y saludos
Responder Con Cita