[SOLUCIONADO] Insertar texto en lugar específico textbox

Iniciado por .:Weeds:., 8 Julio 2013, 00:55 AM

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

.:Weeds:.

Hola amigos, he estado un buen rato buscando con mi amigo Google y no he encontrado la respuesta a mi problema, os explico. Tengo el siguiente texto en un textbox:


  "RAIZ": {
"alerts": {
        "alert": true
     },
}


Y esto es lo que quiero conseguir añadiendo un texto en una posición especifica(me vale con insertarlo despues de "RAIZ": {)


  "RAIZ": {
"alerts": {
        "alert": true
     },
//TEXTO AÑADIDO
"alerts2": {
        "alert2": true
     },
//FIN TEXTO AÑADIDO
}


Parece algo sencillo pero no lo consigo  :-\

Saludos y gracias.


Eleкtro

#1
No lo entiendo muy bien, ¿Puedes ser más específico?.

Si sólo se tarata básicamente de insertar "X" texto en "Y" posición de un String, entonces puedes usar el método "Substring".

No sé si esto te servirá de ayuda porque no entiendo del todo la forma en la que lo intentas hacer, pero bueno, aquí tienes:

Código (vbnet) [Seleccionar]
Public Class Form1

   Dim [String] As String = String.Empty

   Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown

       [String] = <a><![CDATA[
  "RAIZ": {
"alerts": {
        "alert": true
     },
}
]]></a>.Value

       'Output:
       '
       '   "RAIZ": {
       '"alerts": {
       '         "alert": true
       '      },
       '}

       [String] = [String].Substring(0, [String].LastIndexOf(",")) & _
           <a><![CDATA[
"alerts2": {
        "alert2": true
     },
]]></a>.Value & (Environment.NewLine & "}")

       'Output:
       '
       '   "RAIZ": {
       '"alerts": {
       '         "alert": true
       '      }
       '"alerts2": {
       '         "alert2": true
       '      },
       '}

       MsgBox([String])

   End Sub

End Class


EDITO: Si lo que quieres es poner (restringir) el cursor en una posición específica del textbox puedes usar el mismo método:
Código (vbnet) [Seleccionar]
TextBox1.Select(TextBox1.Text.LastIndexOf(",") + 1, 0)








.:Weeds:.

Hola EleKtro H@cker,
No me sirve por varios motivos, el primero es que no puedo usar <a><![CDATA[ debido a que trabajo con .net 2.0 y no contiene linq (pero bueno se inserta el texto en una variable y problema resuelto), y la otra cuestión es que si existe mas texto debajo desaparece.

Perdona por no ser mas claro, lo que estoy haciendo exactamente es editar el archivo preferences de google chrome, para que mi extensión se añada a este. Debo de modificar esta parte:


   "extensions": {
      "alerts": {
         "initialized": true
      },
      "autoupdate": {
         "last_check": "***************",
         "next_check": "***************"
      },
      "blacklistupdate": {
         "lastpingday": "**********",
         "version": "0.0.0.***"
      },
      "chrome_url_overrides": {
         "bookmarks": [ "chrome-extension://*************************/main.html" ]
      },
      "last_chrome_version": "27.0.1453.116",
      "settings": {
         "aakhlmakppmkkmfkoibponkmmpgpmjgl": {
            "blacklist": true
         },
         "aandpgohbohmlknpjbblpmoladhoochg": {
            "blacklist": true
         },


La parte de texto que quiero añadir por ejemplo es esta:


         "jandpgohbohmlknpjbblpmoladhoochg": {
            "blacklist": true
         },


Esta debe añadirse despues de "settings": { y deberia de hacerse en orden alfabético aun que eso da igual ya que me he dado cuenta de que Google Chrome los ordena solo. He pensado en mirar las lineas 1 por 1 y cuando encuentre "settings": { que se añada 1 linea debajo pero tampoco se como.

Saludos y gracias de nuevo.


Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Eleкtro

#4
Ahora está todo mucho más claro, podrías haber comentado lo de Google desde el principio xD.

Puedes hacerlo a lo experto como lo haría Novlucker usando alguna librería para manejar JSON, o también puedes usar esta alternativa que hice:

Código (vbnet) [Seleccionar]
        Dim MyExtension As String, GoogleFile As String, Preferences() As String

        MyExtension = """aakhlmakppmkkmfkoibponkmmpgpmjgl"": {""blacklist"": true},"
        GoogleFile = "C:\Program Files\Google Chrome\Data\profile\Default\Preferences"
        Preferences = IO.File.ReadAllLines(GoogleFile)

        For X As Int32 = 0 To Preferences.Length - 1
            If Preferences(X).Trim = """settings"": {" Then
                Preferences(X) &= MyExtension
                IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)
                Exit For
            End If
        Next


Saludos








Novlucker

Eso también sirve :P
Creo que para un virus alcanza :rolleyes:

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

.:Weeds:.

muy bueno el code, MUCHAS GRACIAS!! le he añadido bien la ruta pero me da el siguiente error
"Caracteres no validos en la ruta de acceso" en la linea:
IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)

Código (vbnet) [Seleccionar]

        Dim MyExtension As String, GoogleFile As String, Preferences() As String

        MyExtension = """aakhlmakppmkkmfkoibponkmmpgpmjgl"": {""blacklist"": true},"
        GoogleFile = Environment.GetFolderPath(SpecialFolder.LocalApplicationData) & "\Google\Chrome\User Data\Default\Preferences"
        Preferences = IO.File.ReadAllLines(GoogleFile)

        For X As Int32 = 0 To Preferences.Length - 1
            If Preferences(X).Trim = """settings"": {" Then
                Preferences(X) &= MyExtension
                IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)
                Exit For
            End If
        Next


Era demasiado bonito para ser verdad xD

Saludos.


.:Weeds:.

Vale ahora si que es 100% funcional:

Código (vbnet) [Seleccionar]

        Dim MyExtension As String, GoogleFile As String, Preferences() As String

        Dim TextBoxChrome As New TextBox()
        TextBoxChrome.Multiline = True

        Dim lines As String() = {
        "         ""aakhlmakppmkkmfkoibponkmmpgpmjgl"": {",
        "            ""blacklist"": true},"
         }
        MyExtension = Join(lines, vbCrLf)
        GoogleFile = Environment.GetFolderPath(SpecialFolder.LocalApplicationData) & "\Google\Chrome\User Data\Default\Preferences"
        Preferences = IO.File.ReadAllLines(GoogleFile)

        For X As Int32 = 0 To Preferences.Length - 1
            If Preferences(X).Trim = """settings"": {" Then
                Preferences(X) &= Environment.NewLine + MyExtension
                TextBoxChrome.Text = String.Join(Environment.NewLine, Preferences)
                Dim EscritorChrome As New StreamWriter(GoogleFile)
                EscritorChrome.Write(TextBoxChrome.Text)
                EscritorChrome.Close()
                EscritorChrome.Dispose()
                Exit For
            End If
        Next


Saludos y gracias por la ayuda.  ;D


Eleкtro

#8
Cita de: .:Weeds:. en  8 Julio 2013, 23:14 PM
le he añadido bien la ruta pero me da el siguiente error
"Caracteres no validos en la ruta de acceso" en la linea:
IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)

Lo escribí al vuelo sin testearlo, lo que ocurre es que por confusión intercambié la posición los parámetros aquí:
Código (vbnet) [Seleccionar]
IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)

Así si:
Código (vbnet) [Seleccionar]
IO.File.WriteAllText(GoogleFile, String.Join(Environment.NewLine, Preferences))

Este ya funciona (con la ruta correcta para tu PC):
Código (vbnet) [Seleccionar]
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim MyExtension As String, GoogleFile As String, Preferences() As String

       MyExtension = """aakhlmakppmkkmfkoibponkmmpgpmjgl"": {""blacklist"": true},"
       GoogleFile = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Google\Chrome\User Data\Default\Preferences")
       Preferences = IO.File.ReadAllLines(GoogleFile)

       For X As Int32 = 0 To Preferences.Length - 1
           If Preferences(X).Trim = """settings"": {" Then
               Preferences(X) &= MyExtension
               IO.File.WriteAllText(GoogleFile, String.Join(Environment.NewLine, Preferences))
               Exit For
           End If
       Next
   End Sub


PD: No es necesario identar las lineas del JSON (Google chrome lo ordena por si mismo), pero bueno, si prefieres hacer un string multilinea como en tu ultimo code es tu decisión.

Saludos.








.:Weeds:.

Cita de: EleKtro H@cker en  9 Julio 2013, 09:36 AM
Este ya funciona (con la ruta correcta para tu PC):

Tu mensaje me ha dejado intrigado xD, llevo tiempo testeando donde se guarda ese archivo de configuración e independientemente de que windows utilice siempre se guarda en la ruta que yo puse. Hay algún caso donde se guarde en la ruta que tu especificaste? Por que de ser asi estoy fallando en lo mas básico  :rolleyes:

Saludos.