![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Buenas de nuevo a todos, segunda duda por dia espero no molestar
Bueno estoy intentando pasar una funcion que hice en c++ de encontrar determinada palabra en un texto a delphi pero tengo un error muy tonto y es que no me permite hacer esto: Código:
function EncontrarCadena(Cadena: array [0..MAX_PATH] of char): Boolean; gracias de antemano y saludos |
|
#2
|
|||
|
|||
|
Hola...
En Delphi podrías usar el tipo string sin problemas:
Ahora, no veo el por que crear una función si el mismo Delphi ya cuenta con funciones que te pueden ayudar para lo mismo:
Saludos... |
|
#3
|
||||
|
||||
|
¿Podrías poner el código C++ original?
![]() |
|
#4
|
||||
|
||||
|
La sintaxis que estás utilizando "Cadena: array [0..MAX_PATH] of char" es para declarar una variable, no el parámetro de una función. En este momento no recuerdo exactamente como se definen los parámetros array en Delphi. Talvez un compañero lo pueda aclarar.
Saludos! |
|
#5
|
||||
|
||||
|
Cita:
|
|
#7
|
||||
|
||||
|
Hola KroSaver.
Creo que la forma mas simple es la que te sugiere maeyanes en el segundo mensaje. Ejemplo Delphi: Equivalente C++: Código:
#include <ctype>
#include <iostream>
int EncontrarCadena(std::string sub, std::string cad)
{
for(int i=0;cad[i];i++) cad[i] = tolower(cad[i]);
for(int i=0;sub[i];i++) sub[i] = tolower(sub[i]);
return cad.find(sub);
}
Código:
#include <string.h>
int EncontrarCadena(char *sub, char *cad)
{
char *d;
int i;
for(i=0;cad[i];i++) cad[i] = tolower(cad[i]);
for(i=0;sub[i];i++) sub[i] = tolower(sub[i]);
d = strstr(cad, sub);
if (d) return d - cad; // Posición de cadena hallada
return -1;
}
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#8
|
||||
|
||||
|
Eso no es verdad, Román. Así sería si se tratara de un campo en una clase, pero, como seguramente recordarás, las variables que no usan contadores de referencias (aun siendo Result) no se inicializan en automático y pueden traer cualquier cosa de inicio.
Por cierto, a mí y a muchos otros nos alegra verte de nuevo en la palestra. ![]() ¡Un abrazo! |
|
#9
|
||||
|
||||
|
Cita:
![]() |
|
#10
|
|||
|
|||
|
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;
}
gracias y saludos |
|
#11
|
|||
|
|||
|
Hola...
No veo por que sea meter basura al exe el usar una función incluida en el mismo lenguaje sobre el cual estás desarrollando. Saludos... |
|
#12
|
|||
|
|||
|
Casimiro tranqui tio que no digo que no sepais no seas ingnorante y lee bien lo que escribi tengo esa duda y yasta como digo en todos los mensages cada uno programa como quiere ok?
Asique si vas a decirme esas tonterias creo que te equivocastes de sitio. Un moderador deveria de leer y no acomodar las frases de otro antes de contestar de esa manera: Cita:
Última edición por KroSaver fecha: 21-02-2013 a las 12:57:37. Razón: Se me paso agregar eso |
|
#13
|
||||
|
||||
|
Cita:
Por cierto, lo que dije antes no es ninguna tontería. Eres nuevo aquí y no puedes opinar correctamente sobre eso.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#14
|
|||
|
|||
|
Como asi? no puedo opinar?
Aver no intento "INFLUIR MI OPINION ES SOLO MI OPINION" letras mayus por si te lo saltas y no lo lees. 1º ¿Cual es mi duda? Como declaro la char con MAX_PATH al declarar la funcion. 2º ¿He pedido yo que me den uan funcion que me encuentre una cadena en texto? No. 3º No quiero hacer de una duda una discusion encima con un moderador que no lee antes de escribir ¿Vale? saludos y cerrad el tema porque creo que no se me entendio en mi duda dadlo por solucionado. |
|
#15
|
||||
|
||||
|
No te sulfures, amigo, creo que el que no ha leído bien has sido tú, yo no he dicho que no puedas opinar, por favor. Lo que he puesto ha sido: no puedes opinar correctamente, sobre si son buenos o malos programadores, porque no los conoces.
Tan sólo trataba de darte a entender que siguieras los consejos de personas que saben y tienen muchísima experiencia. Pero si no te gusta, no hay problema, como bien dices tú: cada uno programa como quiere. Desde luego que no voy a iniciar ninguna discusión, tengo otras cosas mejores que hacer, y tú también, seguro ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#16
|
||||
|
||||
|
Hola KroSaver,
Con todo respeto y también al igual que casimiro (Que en otras, tiene mas paciencia que muchos... por lo menos que yo) opino que debido a tu inexperiencia y desconocimiento. Estás intentando cosas que si escucharas a quienes te están prestando la ayuda, solventarías de una manera mas sencilla. Y pues, como te dijeron ya. Delphi, te ofrece no solo un buen IDE, sino un framework (VCL) catalogado como uno de los mejores ![]() Que si quieres puedes obviarlo y volver a pascal puro (puedes usar free pascal), pero si instalas Delphi es porque quieres usar las bondades del mismo, como son acceso rápido a datos, el diseño rápido de aplicaciones y la cantidad de funciones que vas a encontrar. Mira, en DelphiBasics, puedes encontrar referencias y ejemplos de como usar muchísimas funciones de Delphi que te ayudarán a no reinventar la rueda. Con respecto a tu duda, puedes declarar un arreglo dinámico como parámetro de una función
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| problemas para crear una funcion | ergonickolas | Varios | 18 | 08-09-2011 19:02:54 |
| Problemas con la funcion system | luiggixD | C++ Builder | 3 | 23-04-2008 15:37:37 |
| Problemas para crear una funcion | fartycl | Varios | 1 | 04-07-2006 19:47:50 |
| Problemas con funcion RoundTo | vick | Varios | 2 | 12-10-2005 02:12:35 |
| Problemas con funcion | bbjb | Varios | 10 | 27-09-2004 18:08:19 |
|