elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  ¿¡Remplazar el enter por un caracter?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿¡Remplazar el enter por un caracter?  (Leído 10,481 veces)
TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
¿¡Remplazar el enter por un caracter?
« en: 1 Agosto 2006, 17:07 pm »

Saludos,

Pues vera, estoy haciendo un exe para enviar correo, usando MAPI y ShellExecute.

Cuando uso MAPI's Al final del envio sale un mensaje diciendo que un programa esta intentand enviar el sgte mensaje y bala bla bla.. lo cual no viene a mi caso..

El segundo es usando ShellExecute.


Código:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long



Private Sub Command1_Click()
Call ShellExecute(Me.hwnd, "Open", "mailto:xxx@xx.com?bcc=&subject=Probando Mailto&body=PrimeraLinea%0ASegundaLinea
End Sub

Con la Segunda opcion no me sale ese mensaje molesto, pero me ejecuta, y me muestra el correo a enviar.. lo cual me resulta util porsi quiero agregar ams cosas al mensaje..

Problema 1:  Este metodo solo me permite enviar texto en linea y no lee los enters. porque quiero enviar el contenido de un texto box.. y solo sale en el mensaje la primera linea..


¿Posibles La soluciones?
1.- Intente concatenando cadenas:
Código:
"Linea1" & chr(13) & "Linea2"   --> No resulto
2.-Insertando caracter especial
Código:
Linea1%0ALinea2   --> Si resulto ;)

La clave esta en agregar el caracter "%0A" que reconoce como un enter.. mi proble es que deseo buscar todos los enter en un textbox y reamplazarlos por %0A. asi lo envio  en una variable y al fin el correo se muestra tal y como este en el textbox..


Porfa.. si alguien me echa ua mano o si conoce de un link sobre como puedo remplzar los enter de un textbox por %0A

O si conocen otra manera de enviar correo desde desde un textbox, pero sin que salgue ese mensaje de advertencia de envio..

saludos.



En línea

sircid

Desconectado Desconectado

Mensajes: 107


¡Nacido para ******te!


Ver Perfil
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #1 en: 1 Agosto 2006, 18:15 pm »

No entiendo nada de enviar emails en VB6 pero la duda que tienes si se como resolverla :P.

Si es posible. Al fin y al cabo el salto de línea es un caracter mas como el espacio.

Código:
Dim texto, remplazo As String
Dim n, start As Integer
n = 1
start = 1
texto = Chr(32)
remplazo = "%0A"
While n <> 0 ' Mientras en el texto siga existiendo la variable texto:
n = InStr(start, Text1.Text, texto, vbTextCompare) ' Compara el text1.text con la variable texto. El número que devuelve es la posición donde se ha encontrado la cadena de caracteres. Como la posición 0 no existe 0 es que no se ha encontrado.
start = n + 1 'empezará siempre desde la posición de la ultima cadena de caracter encontrada + 1.
If n <> 0 Then ' si se ha encontrado
Text1.SelStart = n - 1 ' se seleccionará la cadena de caracter
Text1.SelLength = Len(texto)
Text1.SelText = remplazo ' se reemplaza el texto seleccionado por el deseado: remplazo.
End If
Wend

El Chr(32) convierte el número 32 en Ascii ( igual que pulsar ALT+32 en numpad y te saldrá un espacio ). Busca el código Ascii del enter ( no lo encontré sorry ) e utilizalo y funcionará 100%.

PD: Encontre el codigo de salto de linea es el 10. Chr(10). Lo probé pero da un resultado extraño. Compruebalo haber que tal.

Espero haberte ayudado.


« Última modificación: 1 Agosto 2006, 18:19 pm por sircid » En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #2 en: 1 Agosto 2006, 18:21 pm »

otra forma más sencilla seria:

Código:
Texto = Replace(Text1.Text, vbCrLf, "%0A")

Este código remplaca el caracter vbCrLf por el caracter %0A, si no te sirve prueba este:

Código:
Texto = Replace(Text1.Text, Chr(13), "%0A")

Saludos!!
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
sircid

Desconectado Desconectado

Mensajes: 107


¡Nacido para ******te!


Ver Perfil
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #3 en: 1 Agosto 2006, 18:30 pm »

Ignoraba la existencia de la funcion Replace en VB6.

Ese código reemplazaria todo los caracteres en el texto o solo uno?
En línea

elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #4 en: 1 Agosto 2006, 18:38 pm »

bueno aca tengo algo que te servira,. es sencillo y rapido

Código:
Private Sub Command1_Click()
Dim Cambiar
Cambiar = Replace(Text1.Text, vbCrLf, "%0A")
Text2.Text = Cambiar
End Sub

el text1 contiene todo el texto con los "enters" y demas...
en el text2 al pulsar el boton se te pone todo en una cadena

avisa si te sirve



El MaRo!
En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #5 en: 1 Agosto 2006, 18:40 pm »

Ignoraba la existencia de la funcion Replace en VB6.

Ese código reemplazaria todo los caracteres en el texto o solo uno?

Si, reemplazaria todos los caracteres de ese string ;)

Por cierto elmaro, eso que has puesto es lo mismo que lo mio, no?
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #6 en: 1 Agosto 2006, 18:45 pm »

jajaja si,. es que estaba escribiendo el code y me fui a comer,. cuadno volvi me aviso que avia nuevos mensajes,. pero lo postie igual ... :P iba a ser el primero que contestara si no comia :S pero bue...

ahora que veo es lo mismo, solo que tiene una linea que te muestra como keda despues de remplazado,. tu usaste nomas el Replace
es un code bastante simple, no como el de sircid que es bastante largo y complicado de entender a comparacion del Replace, ovbio. es bastante complejo, muy bueno

perdon xD




El MaRo!
En línea

karmany
Colaborador
***
Desconectado Desconectado

Mensajes: 1.615


Sueñas que sueñas


Ver Perfil WWW
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #7 en: 1 Agosto 2006, 19:09 pm »

Te voy a dar otra solución que no busca el vbCrLf, así te aparecerá tal como lo pusiste en el textbox..
1 formulario, 1 botón y un textbox:

Lo primero yo he dibujado un textbox con esto:
height 1575
left 480
top 480
width 2175.

El interesante código es el siguiente( así te evitas buscar vbCrLf, ya que muchas veces no cabe en una linea de un textbox):
Código:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Command1_Click()
    Dim i As Long, nlineas As Long
    Dim inicio As Long, longitud As Long
    Dim frase As String
   
    ' Constantes SendMessage:
    Const EM_GETLINECOUNT = &HBA
    Const EM_LINELENGTH = &HC1
    Const EM_LINEINDEX = &HBB
   
    ' Calcula el número de líneas del textbox
    nlineas = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0&)

    For i = 0 To nlineas - 1
        ' Calcula el primer carácter de la linea actual:
        inicio = SendMessage(Text1.hwnd, EM_LINEINDEX, i, 0&) + 1
        ' Calcula la longitud de la línea actual
        longitud = SendMessage(Text1.hwnd, EM_LINELENGTH, inicio, 0&)
        frase = frase + Mid$(Text1.Text, inicio, longitud) + "%0A"
    Next i
   
    Call ShellExecute(Me.hwnd, "Open", "mailto:xxx@xx.com?bcc=&subject=Probando Mailto&body=" + frase, "", "", vbNormalFocus)
End Sub

Private Sub Form_Load()
Text1.Text = "Quijote 2006:" + vbCrLf + "En un lugar de" + vbCrLf + "la mancha, de cuyo nombre no quiero acordarme..."
End Sub

Así que al ejecutar el programa aparece esto:


Y al pulsar el botón:


Ya contarás, un saludo..
En línea

TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #8 en: 1 Agosto 2006, 19:22 pm »

Muchísimas gracias a todos... son grandes. Pude resolver el problema..

Gracias a uds. Pue de cambiar todos los enters por los caracteres "%0A" y asi sí se puede enviar los mensajes con el ShelExecute tal y como esta enn el text box..

Bueno, no todo es cierto..

Pues puse cran cantidad de información en el textbox... al pinchar en el command enviar.. no se ejecutaba el nuevo correo.. y como que pasaba por altdo todo el mensaje a evnair..

Y me preguntaba si he ingresado directamente lso caracteres %0A y al enviar lo reconocía como un enter... y ahora porque  "@%&0.... no envia si ya todo esta remplazado..

Porlo que tuve que reisar y reviar hasta que enpeze a cortar la infromación.  Lo que dedujo que solo se puede envair 819 caracateres contando los espacios en blancos, pero no los enters ya que se remplazan.... bueno depende de cuantos.. enters haya...

Pero como para mi es suficiente enviar los 819 caracteres, no me incomoda.. Pero LES INFORMABA PARA QUE CUANDO TENGAN EL LIO YA SEPAN POR DONDE EMPEZAR..


Saludos,
En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: ¿¡Remplazar el enter por un caracter?
« Respuesta #9 en: 1 Agosto 2006, 19:27 pm »

Ojo, que el carcater "enter" (conocido formalmente como retorno de carro) ocupa 2 caracteres. es decir:

vbCrLf = vbCr + vbLf
vbCrLf = Chr(13) + Chr(10)

Por eso los "enters" ocupan como 2 caracters normales ;)
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
alt + enter en java
Java
Ikku 0 2,280 Último mensaje 18 Octubre 2011, 22:08 pm
por Ikku
ayuda quiero remplazar el ds1307 a ds1302
Electrónica
andrea_anex 0 4,206 Último mensaje 4 Diciembre 2012, 19:01 pm
por andrea_anex
Remplazar la linea entera...
Scripting
Cascuda 2 2,546 Último mensaje 25 Abril 2015, 22:25 pm
por Cascuda
remplazar .php?xxx por xxx
PHP
marcos raketsky 4 4,180 Último mensaje 29 Junio 2016, 16:31 pm
por AlbertoBSD
Bat para remplazar un texto
Scripting
hazoli 0 1,802 Último mensaje 4 Mayo 2018, 00:54 am
por hazoli
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines