Página 1 de 1

Interpretar un Texto

Publicado: 12 Oct 2014 21:07
por NicolasG
Hola gente, tengo una duda, y es como interpretar un texto con un script y que junte una valué con lo que contenga la valué, ejemplo
m1=google.com
ams=amsspecialist.com
ams2=redtuVe.com

y que por ejemplo lo ponga en listbox como el m1 como el nombre y el google.com como la data.
Perdón si no me explico bien :sorry:

PD: si alguien tiene una guía o información de la función string.format, pasen mela plz XD

:SOS: :SOS: :SOS: :SOS: :SOS:

Publicado: 12 Oct 2014 22:42
por comprotodo201480
No entendi pero quiero ayudar...

explicate mejor entiendo poco pero intentare hacer algo con tus palabras

Publicado: 13 Oct 2014 00:15
por Dow Sher
Si las variables las nombras tu mismo manualmente, entonces podrías hacerlo así:
sTabla = {"m1", "ams", "ams2"};
nTabla = {"google.com", "amsspecialist.com", "redtuVe.com"};

for x, z in pairs (sTabla) do
 ListBox.AddItem("ListBox1", z, nTabla[x]);
end
Si te das cuenta, m1 y google.com están en las misma posición en las tablas (lugar 1) y así sucesivamente con ams y amsspecialist.com (lugar 2)...............

Explica un poco mejor, como obtienes las variables, o algo con que apoyarnos para ayudarte y darte la mejor manera de hacer las cosas

Publicado: 13 Oct 2014 01:51
por NicolasG
El temas es que yo tenia este codigo:
Get_ItemData = ListBoxEx.GetItemDataEx("Plugin1", e_Index);
Get_ModsNames = INIFile.GetValueNames(Get_ItemData, "Mods");
Tree.RemoveNode("Tree1", "0");
Tree.InsertNode("Tree1", "1", {Text="Mods",Data="",Expanded=true});

for sIndex, Values in pairs (Get_ModsNames) do
	Get_Urls = INIFile.GetValue(Get_ItemData, "Mods", Values);
	Get_ToolTip = ListBoxEx.GetItemToolTipText("Plugin1", e_Index, true);
	Get_Description = INIFile.GetValue(Get_ItemData, "Info", "Description");
	Label.SetText("pack.name", Get_ToolTip.."");
	Label.SetText("count.mods.in.pack","Count Mods in pack: "..sIndex.."");
	Paragraph.SetText("Paragraph1", Get_Description);
	Tree.InsertNode("Tree1", "1."..sIndex, {Text=Values.."",Data=Get_Urls,Checked=true});
end
este código esta bien, pero solo sirve con archivos, ahora estoy usando MySQL y es mas complicado :hypno:

dowsher
Ese es el problema yo no decido lo que abra en la tabla

Publicado: 13 Oct 2014 02:53
por Dow Sher
:hypno: Lo que quieres es ese mismo Script pero para MySQL?

Publicado: 13 Oct 2014 03:01
por NicolasG
no todo el código, solo el script que lee el contenido de la columna mods
esto es lo que estaría en la columna
m1=google.com
ams=amsspecialist.com
ams2=redtuVe.com

obvia mente el contenido baria

Publicado: 13 Oct 2014 04:32
por Dow Sher
Supongamos que en tu base de datos tienes la siguiente tabla:
Imagen
Entonces el Script seria algo así:
Get_Urls = MySQL.QueryToTable("select * from MODS"); -- Obtiene todos los campos de la tabla "MODS"
  if Application.GetLastError() == 0 then
   for nRow, x in pairs (Get_Urls) do -- Obtiene las filas de la tabla
    variable = Get_Urls[nRow][1]; -- Obtiene el contenido de la fila "nRow" y la columna "1"
    contenido = Get_Urls[nRow][2]; -- Obtiene el contenido de la fila "nRow" y la columna "2"
    ListBoxEx.AddItem("Plugin1", variable, "", contenido, "", 0, LBXITEM_HTML, 0, nil, nil, nil);
   end
  end
end
Esto es lo que necesitas?

Publicado: 13 Oct 2014 07:52
por NicolasG
esta es mi db
Imagen
la db es lo de menos
lo que quiero es que lea este texto
m1=google.com
ams=amsspecialist.com
ams2=redtuVe.com
y por ejemplo mandar lo que hai antes de el = como nombre de un listbox, y lo hay despues del = como data de m1 :lol:

Publicado: 13 Oct 2014 16:19
por Dow Sher
Entonces seria algo así:
Get_Urls = MySQL.QueryToTable("select * from modpack_db");
  if Application.GetLastError() == 0 then
   for nRow, x in pairs (Get_Urls) do
    nStr = Get_Urls[nRow][4]; -- -- Obtiene el contenido de la celda de la fila "nRow" y la columna "4" de tu DB
    rStr = nStr:sub(nStr:find("="), -1); -- Abajo explico que hace esto
    nText = nStr:gsub(rStr, ""); -- Abajo explico que hace esto
    nData = rStr:gsub("=", ""); -- Abajo explico que hace esto
    ListBoxEx.AddItem("Plugin1", nText, "", nData, "", 0, LBXITEM_HTML, 0, nil, nil, nil);
   end
  end
Suponiendo que obtuviste de tu DB m1=google.com
nStr = Get_Urls[nRow][4]; -- Esto seria "m1=google.com"
nStr:find("=") -- Busca la primera aparición de "=" en el String "nStr" (posición 3 en "m1=google.com")
rStr = nStr:sub(nStr:find("="), -1) -- Obtiene un SubString de nStr que comienza en donde se encontró "=" (en la linea anterior te explique) y termina en -1 (-1 es la longitud del String "nStr"), retornaria "=google.com"
nText = nStr:gsub(rStr, ""); -- Remplaza "rStr" por "" en el string "nStr", retorna "m1"
nData = rStr:gsub("=", ""); -- Remplaza "=" por "" en el string "rStr", retorna "google.com"

Espero haber podido ayudarte. Si tienes dudes en preguntar si tienes dudas.
Suerte con tu proyecto :friends:

Publicado: 13 Oct 2014 19:14
por NicolasG
no entiendo lo de
MySQL.QueryToTable
:hypno: :hypno: :hypno:

Publicado: 13 Oct 2014 19:29
por NicolasG
ya esta
Muchas gracias dowsher, abrazo grande desde argentina :friends: :friends: :friends: :friends:
MySQLCursor = MySQLConnection:execute("SELECT * FROM nicolasgomez.modpack_db");
for Index = 1, MySQLCursor:numrows() do
	local id, name, by, mod = MySQLCursor:fetch();
	---------------------------------------
	nStr = mod; -- -- Obtiene el contenido de la celda de la fila "nRow" y la columna "4" de tu DB
    rStr = nStr:sub(nStr:find("="), -1); -- Abajo explico que hace esto
    nText = nStr:gsub(rStr, ""); -- Abajo explico que hace esto
    nData = rStr:gsub("=", "");
    Debug.Print(nText..""..nData.."");
end

Publicado: 13 Oct 2014 23:21
por Pabloko
en respuesta a la pregunta original, interpretar un string como script lua puedes usar esta funcion
	function lua_dostring(sLua)
        local Return, Error = pcall(function(s)
            return loadstring(s)();
        end, sLua);

        return Return, Error;
    end

Re:

Publicado: 13 Oct 2014 23:40
por NicolasG
Gracias :friends: :friends: