Problema con un código para reemplazar caracteres

Iniciado por zikotik, 11 Mayo 2012, 20:46 PM

0 Miembros y 1 Visitante están viendo este tema.

zikotik

Hola gente, qué tal, soy nuevo en el foro. Gracias a éste pude encontrar muchas soluciones a muchas de mis dudas pasadas, pero me surgió una duda, y busqué en muchos lugares ya, inclusive en éste, pero no encontré la solución.

Aquí mi duda...

Estoy haciendo un programa que permite programar ataques con "lenguaje propio" para utilizarlos con Botnets HTTP o Botnets FTP (no usa IRC) que en realidad lo que hace es guardar todo el código en un archivo llamado file.zpk y luego es leido en otro textBox, traduce palabras en especial y las remplaza a batch, luego compila todo a exe para poder meterlo a un servidor (éso lo tengo resuelto)

Cuando haya la palabra, la remplaza correctamente.
Por ejemplo:

open.file = start
bucle.load = goto
!script() = @echo off
#: = rem

El problema es que si pongo el objeto que recibe la acción, es decir, por ejemplo:

open.file archivoejemplo.exe
bucle.make memoria
bucle.load memoria

Al traducirlo, lo deja como

start archivoejemplo.ex
:memori
goto memori

Osea, me elimina el último caracter de lo que no tiene que modificar...
POR QUÉ !!!!!!!!!!????
Aquí les dejo el código que estoy utilizando para ésto.
Uso 2 txtBox y un cmdButton. Se escribe en txtConsole y se traduce en txtSource.

Código (vb) [Seleccionar]
Private Sub btnCreate_Click()
On Error Resume Next
Dim lines_file As String
Dim fopen As Integer

Open App.Path & "\file.zpk" For Output As #1
Print #1, txtConsole.Text
Close #1

Open App.Path & "\file.zpk" For Input As #1
Do While Not EOF(1)
Line Input #1, lines_file
txtSource.Text = txtSource.Text + "&" + lines_file

'bucle.load
fopen = InStr(1, txtSource.Text, "bucle.load")
If fopen <> 0 Then
txtSource = Mid(txtSource.Text, 1, fopen - 1) & "goto" & Mid(txtSource, fopen + 10, Len(txtSource) - fopen - 10)

End If


Si alguien me dice cómo arreglar éso, se lo agradecería demasiado !


raul338

Creo que no hacia falta poner toda la explicación :P pero bueno
Creo que tienes un problema de cálculos, ademas de que estas poniendo pedazos de códigos incoherentes (no termina el loop :P)

Fijate bien esto, depuralo bien (usa Debug.Print o alguna otra cosa)

Código (vb) [Seleccionar]
txtSource = Mid(txtSource.Text, 1, fopen - 1) & "goto" & Mid(txtSource, fopen + 10, Len(txtSource) - fopen - 10)

zikotik

Cita de: raul338 en 11 Mayo 2012, 21:11 PM
Creo que no hacia falta poner toda la explicación :P pero bueno
Creo que tienes un problema de cálculos, ademas de que estas poniendo pedazos de códigos incoherentes (no termina el loop :P)

Fijate bien esto, depuralo bien (usa Debug.Print o alguna otra cosa)

Código (vb) [Seleccionar]
txtSource = Mid(txtSource.Text, 1, fopen - 1) & "goto" & Mid(txtSource, fopen + 10, Len(txtSource) - fopen - 10)

MUCHAS GRACIAS ! ME RE SIRVIÓ TU CONSEJO !!!!!!!!
(lo del loop no lo ví, porque lo escribí directamente en el foro, no hice copy paste desde el proyecto).

Cuando me dijiste que usara el Debug.Print, me puse a buscar formas de utilizar debug, y en una decía replace()

Entonces se me ocurrió poner

txtSource = Replace(txtSource.text, "bucle.load", "goto")

y me funcionó a la perfección !
y además me ahorré un montón de código.

me quedó así:

Private Sub btnCreate_Click()
On Error Resume Next
Dim lines_file As String

Open App.Path & "\file.zpk" For Output As #1
Print #1, txtConsole.Text
Close #1
Open App.Path & "\file.zpk" For Input As #1
Do While Not EOF(1)
Line Input #1, lines_file
txtSource.Text = txtSource.Text + "&" + lines_file
Loop
Close #1

'bucle.load
txtSource = Replace(txtSource.Text, "bucle.load", "goto")

End Sub


Muchas gracias nuevamente !