Hola, tengo una duda con bgt, y supongo que aplica para otros lenguajes. Resulta que quiero hacer una función que devuelva un valor de acuerdo a una verificación, pero se comporta rara. Si pongo un if y un else, me diceque hay un error, que se esperaba else, pero si quito el else y lo dejo sin él, funciona mal, pero igual no hace las cosas como quiero, auqí está.
bool remove_muted(string name)
{
string[] m=string_split(muted, "\r\n", true);
string newmuted;
for(int i=0; i<m.length(); i++)
{
if(m[i]==name)
{
m.remove_at(i);
newmuted+=m[i]+"\r\n";
}
muted=newmuted;
write_to(charname,"muted.usr",muted);
return true;
}
else
{
return false;
}
}
Este es uno del os ejemplos, a mi me da error. lo hice de muchas maneras más, y pego la siguiente, pero tampoco me funciona, no hace lo que tiene que hacer, es extraño.
bool remove_muted(string name)
{
string[] m=string_split(muted, "\r\n", true);
string newmuted;
m.sort_ascending();
int result= m.find(name);
if(result>=0)
{
m.remove_at(result); // si encuentra el nombre lo elimina.
}
for(int i=0; i<m.length(); i++)
{
if(m[i]>=0)
{
newmuted+=m[i]+"\r\n"; // recompone el contenido parseado para guardarlo, solo si quedó algo en el array
}
muted=newmuted;
write_to(charname,"muted.usr",muted);
return true;
}
return false;
}
Lo extraño esque los bloques else como en el primer caso, me funcionan correctamente en funciones que no devuelven valores. A las anteriores les he dado mil vueltas y no lo consigo. incluso si pongo un break para que no continúe cuando se cumpla, igual no funciona. o me borra todo, o borra varios y me deja uno, es una locura.