Página 1 de 2
Error de sintaxis
Publicado: 08 Dic 2015 19:20
por alete_loza
Hola gente, recien estaba chusmeando por aca para ver si habia alguna pregunta misma que iba a hacer y encontré la de "contar caracteres"
Contar caracteres y me da error en
for (count, 1, #cadena) then
(le agregué los parentesis por si las moscas)
Y me arroja
"Error sintaxis: Linea= 7: '<name>' esperado en '('
A que se debe???

Re: Error de sintaxis
Publicado: 08 Dic 2015 22:29
por rafaxplayer
ese loop esta mal ,deveria ser asi creo:
for count = 1,#cadena then
Re: Error de sintaxis
Publicado: 09 Dic 2015 00:08
por alete_loza
rafaxplayer escribió:ese loop esta mal ,deveria ser asi creo:
for count = 1,#cadena then
cambié "then" por "do" (y no me arroja error); ahora me lo da en

Re: Error de sintaxis
Publicado: 09 Dic 2015 00:53
por rafaxplayer
si es do , sorry.
lo otro seria numer = number +1 o algo asi.
Re: Error de sintaxis
Publicado: 09 Dic 2015 03:07
por alete_loza
rafaxplayer escribió:si es do , sorry.
lo otro seria numer = number +1 o algo asi.
ERROR en:
x[count] = string.mid(cadena,count,1)
attempt to call field 'mid' (a nil value)
Lo edito: me daba ese error porque no estaban con las letras principales en mayuscula. De
string.mid a
String.Mid
pero me da el attempt to compare number with string (En la misma linea)
Re: Error de sintaxis
Publicado: 09 Dic 2015 04:17
por alete_loza
rafaxplayer escribió:si es do , sorry.
lo otro seria numer = number +1 o algo asi.
VUELVO A PUBLICAR otra respuesta porque ya no me deja editar la publicacion que habia echo.
ERROR en:
x[count] = string.mid(cadena,count,1)
attempt to call field 'mid' (a nil value)
Lo edito: me daba ese error porque no estaban con las letras principales en mayuscula. De
string.mid a
String.Mid
pero me da el attempt to compare number with string (En la misma linea de
if (x[count] >= 0 and x[count] <= 9) then
Re: Error de sintaxis
Publicado: 09 Dic 2015 06:03
por Dow Sher
Creo que no entiendes el código muy bien
x[count] -> estás llamando al index "count" de una tabla llamada "x", obviamente si esa tabla no existe te dará error.
Pon el código completo para poder ayudarte y decirte en qué estás mal
Re: Error de sintaxis
Publicado: 09 Dic 2015 17:35
por alete_loza
dowsher escribió:Creo que no entiendes el código muy bien
x[count] -> estás llamando al index "count" de una tabla llamada "x", obviamente si esa tabla no existe te dará error.
Pon el código completo para poder ayudarte y decirte en qué estás mal
Este es el código (que arreglamos con rafa (mas su ayuda))
cadena = "Loquesea 123";
x = {};
number = 0;
spaces = 0;
chars = 0;
for count = 1,#cadena do
x[count] = String.Mid(cadena,count,1)
if (x[count] >= 0 and x[count] <= 9) then
number = number + 1;
elseif (x[count] == " ") then
spaces = spaces + 1;
else
chars = chars + 1;
end
end
Re: Error de sintaxis
Publicado: 10 Dic 2015 07:12
por Dow Sher
A ver... El código es para contar caracteres de un string???
Si es así está mal redactado
En su lugar yo haría algo mucho más eficiente y rápido, solo una línea de código
cadena = "Loquesea 123";
Dialog.Message("", #cadena);
Pruébalo y me dices que tal

Re: Error de sintaxis
Publicado: 10 Dic 2015 17:34
por Dow Sher
Si buscas no solo un conteo general de caracteres y quieres saber especificaciones de número, letras y espacios, te dejo esto...
sString = Input.GetText("Input1");
Letras = 0;
Espacios = 0;
Numeros = 0;
Posicion = 1;
while Posicion ~= (#sString) do
midString = String.Mid(sString, Posicion, 1);
if midString == "0" then
Numeros = Numeros + 1;
elseif midString == " " then
Espacios = Espacios + 1;
else
nN = String.ToNumber(midString);
if nN ~= 0 then
Numeros = Numeros + 1;
else
Letras = Letras + 1;
end
end
Posicion = Posicion + 1;
end
Dialog.Message("Resultados", 'En el texto "'..sString..'" hay '..(#sString).." caracteres, dónde:\nCantidad de letras: "..Letras.."\nCantidad de números: "..Numeros.."\nCantidad de espacios: "..Espacios);
Re: Error de sintaxis
Publicado: 10 Dic 2015 17:56
por Dow Sher
Si quieres algo más completo que también cuente simbolos... Lo único que se me ocurrió fue usar una tabla ABC
ABC = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
sString = Input.GetText("Input1");
Letras = 0;
Espacios = 0;
Numeros = 0;
Simbolo = 0;
Posicion = 1;
while Posicion ~= (#sString)+1 do
midString = String.Mid(sString, Posicion, 1);
if midString == "0" then
Numeros = Numeros + 1;
elseif midString == " " then
Espacios = Espacios + 1;
else
nN = String.ToNumber(midString);
if nN ~= 0 then
Numeros = Numeros + 1;
else
midString = String.Upper(midString);
Upper = false;
for x = 1, (#ABC) do
if midString == ABC[x] then
Upper = true;
break
end
end
if (Upper) then
Letras = Letras + 1;
else
Simbolo = Simbolo + 1;
end
end
end
Posicion = Posicion + 1;
end
Dialog.Message("Resultados", 'En el texto "'..sString..'" hay '..(#sString).." caracter(es), dónde:\nCantidad de letras: "..Letras.."\nCantidad de números: "..Numeros.."\nCantidad de espacios: "..Espacios.."\nCantidad de simbolos: "..Simbolo);
Re: Error de sintaxis
Publicado: 10 Dic 2015 23:16
por alete_loza
dowsher escribió:Si quieres algo más completo que también cuente simbolos... Lo único que se me ocurrió fue usar una tabla ABC
Gracias dowsher; luego de qu termine de hacer unos trabajos que me enviaron hacer, en breves me lo pondré a probarlo; pero veo que el ultimo se asemeja mas a lo que quiero hacer (porque es un diseño de calculadora de resistencia), algo asi como "calcular colores de banda de una resistencia según el valor que se ingrese (en ese ultimo caso me faltaria decodificar (o desmenuzar y separar) el numero de resultado (ejemplo): 150; y que me permita elegir separadamente 1 5 0 (es decir; elegir x[1] x[5] x[0]
Pero gracias igualmente, ya lo haré a lo primero

Re: Error de sintaxis
Publicado: 11 Dic 2015 05:24
por alete_loza
dowsher escribió:Si quieres algo más completo que también cuente simbolos... Lo único que se me ocurrió fue usar una tabla ABC
ABC = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; ......
Este mola (aunque mucho para las dos cosas que solo quería (pero muy buen aporte)); ahora en donde pongo que me desmenuse lo que ingreso? (por ejemplo):
sString = Input.GetText("Input1"); --//Aca podria ingresar por ejemplo 1842
Y que me tome la primera.... la segunda..... la tercera..... (por separado)
Que permita saber que letra/numero o lo que sea, está en el primer lugar; en el segundo lugar.... (y asi sucesivamente)
Porque eso necesito hacer para la calculadora de valores
Re: Error de sintaxis
Publicado: 11 Dic 2015 06:57
por Dow Sher
Oh mi amigo! Lo que usted busca es algo mucho más sencillo
sString = Input.GetText("Input1");
Caracter = {};
Posicion = 1;
while Posicion ~= (#sString)+1 do
midString = String.Mid(sString, Posicion, 1);
Table.Insert(Caracter, (#Caracter)+1, midString);
Posicion = Posicion + 1;
end
sString = "";
for x = 1, (#Caracter) do
sString = sString.."\n"..Caracter[x];
end
Dialog.Message("Resultados", sString);
Pruébelo y dígame si es lo que buscaba

Re: Error de sintaxis
Publicado: 12 Dic 2015 02:20
por alete_loza
dowsher escribió:Oh mi amigo! Lo que usted busca es algo mucho más sencillo
Ehhhcole, era sencillo;
--Obtenemos los valores--
Buscar = Input.GetText("Input1");
if (Buscar > "100") then
respuesta = Buscar / 10; --**NEGRO**-- 10
elseif (Buscar >= "100") then
respuesta = Buscar / 10; --**MARRON**-- 100
elseif (Buscar >= "1000") then
respuesta = Buscar / 10; --**ROJO**-- 1.000
elseif (Buscar >= "10000") then
respuesta = Buscar / 10; --**NARANJA**-- 10.000
elseif (Buscar >= "100000") then
respuesta = Buscar / 10; --**AMARILLO**-- 100.000
elseif (Buscar >= "1000000") then
respuesta = Buscar / 10; --**VERDE**-- 1.000.000
end
----
----
sString = respuesta;
Caracter = {};
Posicion = 1;
while Posicion ~= (#sString)+1 do
midString = String.Mid(sString, Posicion, 1);
Table.Insert(Caracter, (#Caracter)+1, midString);
Posicion = Posicion + 1;
end
sString = "";
for x = 1, (#Caracter) do
sString = sString.."\n"..Caracter[x];
end
Label.SetText("Label1", sString);
Pero me arroja un error de sintaxis al querer ejecutarlo (
Error: attempt to get lenght of global 'sTring' (a number value)en la linea 23
while Posicion ~= (#sString)+1 do
Ese error me arroja; lo que pasa que a sString lo obtendria del resultado de una cuenta interna y no desde el input directamente; porque del input (por ejemplo) ingresaria el numero 1500; que despues de resolverlo daria 150, y de ahi pasaria al sString, pero me dió en el while el error.
Re: Error de sintaxis
Publicado: 12 Dic 2015 08:06
por Dow Sher
Allí mismo te dice cual es el problema, con un poco de conocimientos en ingles puedes saber que el problema es que sString no es un valor string sino numérico. Además de que aún no comprendes la diferencias entre String y Numero en LUA Programación.
Revisa el código, le hice dos cambios y agregué una línea
--Obtenemos los valores--
Buscar = Input.GetText("Input1");
Buscar = tonumber(Buscar);
if (Buscar > 100) then
respuesta = Buscar / 10; --**NEGRO**-- 10
elseif (Buscar >= 100) then
respuesta = Buscar / 10; --**MARRON**-- 100
elseif (Buscar >= 1000) then
respuesta = Buscar / 10; --**ROJO**-- 1.000
elseif (Buscar >= 10000) then
respuesta = Buscar / 10; --**NARANJA**-- 10.000
elseif (Buscar >= 100000) then
respuesta = Buscar / 10; --**AMARILLO**-- 100.000
elseif (Buscar >= 1000000) then
respuesta = Buscar / 10; --**VERDE**-- 1.000.000
end
----
----
sString = ""..respuesta.."";
Caracter = {};
Posicion = 1;
while Posicion ~= (#sString)+1 do
midString = String.Mid(sString, Posicion, 1);
Table.Insert(Caracter, (#Caracter)+1, midString);
Posicion = Posicion + 1;
end
sString = "";
for x = 1, (#Caracter) do
sString = sString.."\n"..Caracter[x];
end
Dialog.Message("", sString);
Re: Error de sintaxis
Publicado: 12 Dic 2015 18:16
por alete_loza
dowsher escribió:Allí mismo te dice cual es el problema, con un poco de conocimientos en ingles puedes saber que el problema es que sString no es un valor string sino numérico. Además de que aún no comprendes la diferencias entre String y Numero en LUA Programación.
Yo ya tendría que estar cumpliendo cadena perpetua; cansado de programar programación web y dejar pasar eso???? (ya me voy a la horca); voy a arregflar mi codigo y agregarlo a otro que anoche se me ocurrió y hasta ahora no me ha dado problemas (solo en este) que es para mostrar los numeros por separado en un label abajo de unoas tiritas der colores que representan la coloracion de la resistencia; despues veré si comparto aca la imagen o el programita para que se pueda usar (a los que les guste la electronica)
Me despido por el momento de vos y rafa, gracias por la ayuda brindada

Re: Error de sintaxis
Publicado: 14 Dic 2015 04:38
por alete_loza
dowsher escribió:
Revisa el código, le hice dos cambios y agregué una línea
Locazo hay algo nuevo que no sale (no me da error ni nada), solo que no me muestra el resultado de una comparación.
Te lo hago corta porque es en esa nada mas.
--//OBTENEMOS LOS DATOS//--
Datos = Input.GetText("Input1");
Calcular = tonumber(Datos);
--//FIN//--
--//COMPARAMOS RANGOS DEL MULTIPLICADOR (TERCERA BANDA)//--
if (Calcular < 10) then
Multiplicador = "x1"; --ORO--
elseif (Calcular >= 10) then
Multiplicador = "x10"; --NEGRO--
elseif (Calcular >= 100) then
Multiplicador = "x100"; --MARRÓN--
elseif (Calcular >= 1000) then
Multiplicador = "x1.000"; --ROJO--
elseif (Calcular >= 10000) then
Multiplicador = "x10.000"; --NARANJA--
elseif (Calcular >= 100000) then
Multiplicador = "x100.000"; --AMARILLO--
elseif (Calcular >= 1000000) then
Multiplicador = "x1.000.000"; --VERDE--
end
--//FIN//--
--//MOSTRAMOS RESULTADOS//--
Label.SetText("Label8", Multiplicador);
cuando infreso el numero 12 me funciona bien con el resultado; pero cuando ingreso un numero superior a 100 me sigue mostrando el de "x10"; xq lo hace??? o q hace mal; porque no me arroja ni un error en eso.

Re: Error de sintaxis
Publicado: 14 Dic 2015 06:18
por Dow Sher
En la misma condición IF con datos numéricos en ocasiones da errores y no funciona, por eso mejor has varias condiciones IF
--//OBTENEMOS LOS DATOS//--
Datos = Input.GetText("Input1");
Calcular = tonumber(Datos);
--//FIN//--
--//COMPARAMOS RANGOS DEL MULTIPLICADOR (TERCERA BANDA)//--
if (Calcular < 10) then
Multiplicador = "x1"; --ORO--
end
if (Calcular >= 10) then
Multiplicador = "x10"; --NEGRO--
end
if (Calcular >= 100) then
Multiplicador = "x100"; --MARRÓN--
end
if (Calcular >= 1000) then
Multiplicador = "x1.000"; --ROJO--
end
if (Calcular >= 10000) then
Multiplicador = "x10.000"; --NARANJA--
end
if (Calcular >= 100000) then
Multiplicador = "x100.000"; --AMARILLO--
end
if (Calcular >= 1000000) then
Multiplicador = "x1.000.000"; --VERDE--
end
--//FIN//--
--//MOSTRAMOS RESULTADOS//--
Label.SetText("Label1", Multiplicador);
Re: Error de sintaxis
Publicado: 18 Dic 2015 02:36
por alete_loza
dowsher escribió:En la misma condición IF con datos numéricos
La ultima y nos vamos (una mas, y no jodemos mas....♪♫♪♫
pasar de un numero de 10000 a 10.000 (o sea, que muestre las comas)
