Buenas vengo a preguntaros como hacer lo siguiente:
Creación de una aplicación la cual a partir de un Texto (código) cree otro (código) mas abreviado.
Ejemplo
Codigo principal: Zmllc3RhDQoQcwAADQAAAAAAAADNe0WLuxYsXdjpPpK/wSvl3f28GDALBGZWYf67Xbv8t/X2/p+nXV9KvPewQ+PBFHGruf07n9Ve9XrI/
Codigo corto:
Condicion1: si se ecuentra 2 caracteres iguales, sustituir por 1 del mismo.
Condicion2: ........
Es decir, necesito crear una aplicación que, lea un archivo Texto y lo transforme a otro con dichas condiciones.
Espero que me podáis orientar, muchas gracias.
saludos
compresión de cadenas de texto
compresión de cadenas de texto
Última edición por dacu el 12 Abr 2011, 22:41, editado 1 vez en total.
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Compilador, descompilador
Pues eso se tiene que hacer con muchas muchas muchas condiciones. Tendrás que utilizar mucho los if...then, Select....case, Switch....case. Tendrás que recuperar el texto del archivo de texto (Mira fileopen y fileread) y tratarlo para luego compararlo con las instrucciones de comparación que te he dicho anteriormente. O sea, que también tienes que utilizar mucho, mucho, mucho funciones de tratamiento de texto para trabajar con el texto recuperado (las que empiezan por String.... , ejemplo: stringinstr, stringlen, stringsplit, etc, etc).
También puede que tengas que ver funciones de conversión de tipos en algunos casos (busca en la ayuda AutoIt>Function Reference>Variables and conversions).
Yo hice hace mucho tiempo una especie de lenguaje aparte con autoit bastante avanzado. Fue bastante tedioso. Tenía sus propias variables auxiliares (esto lo hice con varios arrays de variables que se podían redimensionar) y hasta podía reconocer funciones hechas por mí en el propio lenguaje. Para ello utilizé mucho las funciones de autoit Execute (ejecuta una expresión), assign (asigna una variable por su nombre) y eval (devuelve el valor de una variable definida por un string). Resumiendo y a groso modo, con estas funciones les puedes pasar funciones, comandos y variables de autoit en forma de texto. Es como si las pusiese en el propio script.
Aunque se puede hacer algo bastante decente, tiene sus limitaciones.
Si metes un lenguaje con poca cosa se podría hacer más o menos rápido, pero como le empieces a meter muchas cosas se te puede hacer muy tedioso y complicado.
AutoIt no es el lenguaje más adecuado para realizar otro lenguajes (largos). Ya sabemos que para eso está c y c++ .
Saludos.
También puede que tengas que ver funciones de conversión de tipos en algunos casos (busca en la ayuda AutoIt>Function Reference>Variables and conversions).
Yo hice hace mucho tiempo una especie de lenguaje aparte con autoit bastante avanzado. Fue bastante tedioso. Tenía sus propias variables auxiliares (esto lo hice con varios arrays de variables que se podían redimensionar) y hasta podía reconocer funciones hechas por mí en el propio lenguaje. Para ello utilizé mucho las funciones de autoit Execute (ejecuta una expresión), assign (asigna una variable por su nombre) y eval (devuelve el valor de una variable definida por un string). Resumiendo y a groso modo, con estas funciones les puedes pasar funciones, comandos y variables de autoit en forma de texto. Es como si las pusiese en el propio script.
Aunque se puede hacer algo bastante decente, tiene sus limitaciones.
Si metes un lenguaje con poca cosa se podría hacer más o menos rápido, pero como le empieces a meter muchas cosas se te puede hacer muy tedioso y complicado.
AutoIt no es el lenguaje más adecuado para realizar otro lenguajes (largos). Ya sabemos que para eso está c y c++ .
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Compilador, descompilador
Chefito, como no. jaja tu sabiduría siempre esta presente.
E conseguido lo siguiente.
Como veras lo e echo con mis pocos conocimientos que tengo pero algo hace XD..
E conseguido lo siguiente.
Código: Seleccionar todo
a()
Func a()
$archivo=FileOpen("Z:\autoit\scrips\comprimir\foto.txt")
$leer= FileRead($archivo)
Local $codigo = $leer
Local $condicion = StringRegExpReplace($codigo, "[a][a]", "!")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
aA()
EndFunc
Func aA()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[A][A]", "¡")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
b()
EndFunc
Func b()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[b][b]", "#")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
bB()
EndFunc
Func bB()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[B][B]", "¢")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
c()
EndFunc
Func c()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[c][c]", "$")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
cC()
EndFunc
Func cC()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[C][C]", "£")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
d()
EndFunc
Func d()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[d][d]", "%")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
dD()
EndFunc
Func dD()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[D][D]", "¤")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
e()
EndFunc
Func e()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[e][e]", "(")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
eE()
EndFunc
Func eE()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[E][E]", "¥")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
f()
EndFunc
Func f()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[f][f]", ")")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
fF()
EndFunc
Func fF()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[F][F]", "¦")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
g()
EndFunc
Func g()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[g][g]", "*")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
gG()
EndFunc
Func gG()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[G][G]", "§")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
h()
EndFunc
Func h()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[h][h]", ",")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
hH()
EndFunc
Func hH()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[H][H]", "¨")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
i()
EndFunc
Func i()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[i][i]", "-")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
iI()
EndFunc
Func iI()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[I][I]", "©")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
j()
EndFunc
Func j()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[j][j]", ".")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
jJ()
EndFunc
Func jJ()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[J][J]", "ª")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
k()
EndFunc
Func k()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[k][k]", ":")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
kK()
EndFunc
Func kK()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[K][K]", "«")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
l()
EndFunc
Func l()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[l][l]", ";")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
lL()
EndFunc
Func lL()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[L][L]", "¬")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
m()
EndFunc
Func m()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[m][m]", "<")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
mM()
EndFunc
Func mM()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[M][M]", "®")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
n()
EndFunc
Func n()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[n][n]", ">")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
nN()
EndFunc
Func nN()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[N][N]", "¯")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
o()
EndFunc
Func o()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[o][o]", "?")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
oO()
EndFunc
Func oO()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[O][O]", "°")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
p()
EndFunc
Func p()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[p][p]", "@")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
pP()
EndFunc
Func pP()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[P][P]", "±")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
q()
EndFunc
Func q()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[q][q]", "[")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
qQ()
EndFunc
Func qQ()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[Q][Q]", "²")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
r()
EndFunc
Func r()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[r][r]", "\")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
rR()
EndFunc
Func rR()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[R][R]", "³")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
s()
EndFunc
Func s()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[s][s]", "]")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
sS()
EndFunc
Func sS()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[S][S]", "´")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
t()
EndFunc
Func t()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[t][t]", "^")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
tT()
EndFunc
Func tT()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[T][T]", "µ")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
u()
EndFunc
Func u()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[u][u]", "_")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
uU()
EndFunc
Func uU()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[U][U]", "¶")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
v()
EndFunc
Func v()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[v][v]", "`")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
vV()
EndFunc
Func vV()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[V][V]", "·")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
w()
EndFunc
Func w()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[w][w]", "{")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
wW()
EndFunc
Func wW()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[W][W]", "¸")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
x()
EndFunc
Func x()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[x][x]", "|")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
xX()
EndFunc
Func xX()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[X][X]", "¹")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
y()
EndFunc
Func y()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[y][y]", "}")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
yY()
EndFunc
Func yY()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[Y][Y]", "º")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
z()
EndFunc
Func z()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[z][z]", "~")
FileWrite("archivo13.txt",$condicion)
Global $archivo= FileRead("archivo13.txt")
FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
zZ()
EndFunc
Func zZ()
Local $codigo = $archivo
Local $condicion = StringRegExpReplace($codigo, "[Z][Z]", "»")
FileWrite("archivo13.txt",$condicion)
;~ Global $archivo= FileRead("archivo13.txt")
;~ FileDelete("Z:\autoit\scrips\comprimir\archivo13.txt")
EndFunc
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Compilador, descompilador
Buf, así es muy laborioso, función a función. Sería mejor hacer una tabla de traducción almacenada en un array o algo así.
¿Y usar un compresor? Hay udf que trabajando conjuntamente con una dll crean zip, rar, etc. La cosa no es que sea básica pero es que lo que quieres hacer tampoco lo es.
Una cosa, creo que deberías cambiar el título del post, compilar/decompilar tiene que ver con crear código máquina del código fuente de un programa y viceversa. Cuando los usuarios busquen en el foro cosas sobre compilación saldrá esto y no tiene mucho que ver.
Lo tuyo es más bien compresión de cadenas de texto ¿no?
¿Y usar un compresor? Hay udf que trabajando conjuntamente con una dll crean zip, rar, etc. La cosa no es que sea básica pero es que lo que quieres hacer tampoco lo es.
Una cosa, creo que deberías cambiar el título del post, compilar/decompilar tiene que ver con crear código máquina del código fuente de un programa y viceversa. Cuando los usuarios busquen en el foro cosas sobre compilación saldrá esto y no tiene mucho que ver.
Lo tuyo es más bien compresión de cadenas de texto ¿no?
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: compresión de cadenas de texto
Ximorro , Gracias, colgare mis avances, para que pertenezcan a este foro, por si alguien lo busca.