Autor
|
Tema: ¿¡Remplazar el enter por un caracter? (Leído 10,444 veces)
|
TheGhost(Z)
Desconectado
Mensajes: 230
|
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. 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: "Linea1" & chr(13) & "Linea2" --> No resulto 2.-Insertando caracter especial 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
Mensajes: 107
¡Nacido para ******te!
|
No entiendo nada de enviar emails en VB6 pero la duda que tienes si se como resolverla . Si es posible. Al fin y al cabo el salto de línea es un caracter mas como el espacio. 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
|
otra forma más sencilla seria: Texto = Replace(Text1.Text, vbCrLf, "%0A") Este código remplaca el caracter vbCrLf por el caracter %0A, si no te sirve prueba este: 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
Mensajes: 107
¡Nacido para ******te!
|
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
Mensajes: 301
Unas simples palabras...
|
bueno aca tengo algo que te servira,. es sencillo y rapido 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
|
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
Mensajes: 301
Unas simples palabras...
|
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 ... 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 Replacees 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
|
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): 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
Mensajes: 230
|
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
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
alt + enter en java
Java
|
Ikku
|
0
|
2,263
|
18 Octubre 2011, 22:08 pm
por Ikku
|
|
|
ayuda quiero remplazar el ds1307 a ds1302
Electrónica
|
andrea_anex
|
0
|
4,169
|
4 Diciembre 2012, 19:01 pm
por andrea_anex
|
|
|
Remplazar la linea entera...
Scripting
|
Cascuda
|
2
|
2,466
|
25 Abril 2015, 22:25 pm
por Cascuda
|
|
|
remplazar .php?xxx por xxx
PHP
|
marcos raketsky
|
4
|
4,109
|
29 Junio 2016, 16:31 pm
por AlbertoBSD
|
|
|
Bat para remplazar un texto
Scripting
|
hazoli
|
0
|
1,720
|
4 Mayo 2018, 00:54 am
por hazoli
|
|