duda sobre strstr en c++ (WinApi)

Iniciado por xkiz ™, 22 Septiembre 2011, 15:08 PM

0 Miembros y 2 Visitantes están viendo este tema.

xkiz ™

mmmm.... tal vez me explique mal yo desde el principio, yo tengo  un String Table:
Código (cpp) [Seleccionar]

STRINGTABLE DISCARDABLE
BEGIN
    101                     "Rock & Pop"
END


la cual necesito cargarla en la barra de Titulo de una ventana, un item de un PopUpMenu y un Tooltip, como se ve en la imagen de aca abajo.


Link(imagen): http://www.mediafire.com/imageview.php?quickkey=9be7tg5x83q9pol&thumb=5
si en el rc yo pongo "Rock &&& Pop" en el tooltip y en el item del menú se ven bien pero en la barra de titulo  se visualizan los 3 &.
Cita de: Karman en 23 Septiembre 2011, 05:05 AM
quien te dijo que tenes que agregarle "\" ? el caracter "&" no tiene nada especial
tampoco es un carácter normal como es la "a".

la funcion que me paso naderST funciona bien, pero no se por que me crashea la aplicación, no encontré bien por que todavía, después la voy a debugear bien.

Karman

Cita de: xkiz ™ en 23 Septiembre 2011, 16:57 PM
mmmm.... tal vez me explique mal yo desde el principio, yo tengo  un String Table:
Código (cpp) [Seleccionar]

STRINGTABLE DISCARDABLE
BEGIN
    101                     "Rock & Pop"
END


la cual necesito cargarla en la barra de Titulo de una ventana, un item de un PopUpMenu y un Tooltip, como se ve en la imagen de aca abajo.


y porqué directamente no modificas tu stringtable(?)

S2

xkiz ™

a perdón me olvide de comentar esto antes:
@naderST al compilar la aplicación me dice esto:
Citar
warning C4018: '<=' : signed/unsigned mismatch
Código (cpp) [Seleccionar]

for(j=i; j<=(i+strlen(find)-1); j++){


si la declaro antes:

Código (cpp) [Seleccionar]

int z = i+strlen(find)-1;
for(j=i; j<=z; j++){


ah si me crashea mal....


@Karman lo que no quiero hacer es tener que meter 2 strings 1 para el titulo y otro para el tooltip y el ítem del menú, me la quiero arreglar con solo uno, y si a ese string table le agrego los 3 & estoy en la mismo pero al revés, envés de sumar restar, me explico?

naderST

Bueno supongo que esto pasa porque strlen() devuelve unsigned int y lo estoy asignando a variables tipo int... Aquí lo modifiqué:

char *strreplace(const char * str, const char * find, const char * replace){
unsigned int i,j,k,pos, val, size, oldsize, cont;
unsigned int bytes = strlen(str)-strlen(find)+strlen(replace);
int flag;

char * nstr = (char*)malloc(bytes+1);
memset(nstr, 0, bytes+1);

for(i = 0; i <= strlen(str)-strlen(find); i++){
flag = 1;
val = i;
k = 0;
// unsigned int z = (i+strlen(find)-1);
for(j=i; j<=(i+strlen(find)-1); j++){
if(find[k] != str[j])
flag = 0;
k++;
}

if(flag != 0)
pos = val;
}

    size = pos + strlen(replace) - 1;
    oldsize = pos + strlen(find);
cont = 0;
j = 0;

    for(i=0;i<=bytes-1;i++){
        if(i>=pos && i<=size){
            nstr[i] = replace[cont];
            cont++;
            if(i==size)
                j=oldsize;
        } else {
            nstr[i] = str[j];
            j++;
        }
    }

return nstr;
}