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