Skip to content

Instantly share code, notes, and snippets.

@TristanOrta
Last active December 15, 2023 19:39
Show Gist options
  • Save TristanOrta/53bc93d24604a1f10ddde2c052ec2110 to your computer and use it in GitHub Desktop.
Save TristanOrta/53bc93d24604a1f10ddde2c052ec2110 to your computer and use it in GitHub Desktop.
Funcion para Validar Correos con PowerBuilder / Function to Validate Emails with PowerBuilder

Validate emails PowerBuilder 2023 - Validar correos PowerBuilder 2023

  • Validar correos
  • Validate emails

Descripción - Description

Esta función, f_valida_correo, recibe una cadena de correo electrónico ls_cadena_correo y devuelve un valor booleano lb_correo_error que indica si hubo algún error en los correos electrónicos proporcionados. / This function, f_valida_correo, receives an email string ls_cadena_correo and returns a boolean value lb_correo_error indicating whether there was any error in the provided email addresses.

Parámetros - Parameters

  • ls_cadena_correo: String que contiene correos electrónicos separados por comas.
    • Ejemplo: juan_p@empresauno.com.mx,marco_l@gmail.com,laura_lo@yahoo.com
  • ls_cadena_correo: String containing email addresses separated by commas.
    • Example: juan_p@empresauno.com.mx,marco_l@gmail.com,laura_lo@yahoo.com

Valor de retorno - Return Value

  • lb_correo_error: Valor booleano que indica si hay algún error en los correos electrónicos.

Código - Code

string la_correos[]
string la_correosIncorrectos[]

long ll_pos, ll_start, ll_i
ll_start = 1

boolean lb_correo_error

lb_correo_error = false

// Separar la cadena en correos electrónicos
for ll_pos = 1 to Len(ls_cadena_correo)
    if Mid(ls_cadena_correo, ll_pos, 1) = ',' then
        la_correos[UpperBound(la_correos) + 1] = Mid(ls_cadena_correo, ll_start, ll_pos - ll_start)
        ll_start = ll_pos + 1
    end if
next

// Agregar el último correo después del último separador
la_correos[UpperBound(la_correos) + 1] = Mid(ls_cadena_correo, ll_start)

int li_cont_err

// Expresión regular que verifica uno a uno los correos del arreglo para validar si cumple con el formato de un correo
for ll_i = 1 to UpperBound(la_correos)
    if Match(la_correos[ll_i], '^[a-zA-Z0-9][a-zA-Z0-9\-_\.]*\@[a-zA-Z0-9][a-zA-Z0-9\-_\.]*\.[a-zA-Z0-9\-_\.]+[a-zA-Z0-9]+$') then

    else
        la_correosIncorrectos[UpperBound(la_correosIncorrectos) + 1] = la_correos[ll_i]  // cada correo erroneo se almacena en este arreglo
        li_cont_err ++ // contador de correos erroneos
    end if
next

if li_cont_err > 0 then // si el contador de correos erroneos es mayor a 0 recorrer el arreglo de correos para mostrar en un mensaje los correos a corregir 
    string ls_mensaje_error
    ls_mensaje_error = "Favor de revisar ya que alguno de los siguientes correos están incorrectos:" + Char(13) + Char(10) + Char(13)

    for ll_i = 1 to UpperBound(la_correosIncorrectos)
        ls_mensaje_error += la_correosIncorrectos[ll_i] + Char(13) + Char(10) + Char(13)
    next

    MessageBox("Error", ls_mensaje_error)
	 lb_correo_error = true
end if

return lb_correo_error
@TristanOrta
Copy link
Author

remember
PowerBuilder may have some limitations compared to languages ​​specifically designed to handle regular expressions in a more advanced way, such as Python or JavaScript.

recuerda
PowerBuilder puede tener algunas limitaciones en comparación con lenguajes específicamente diseñados para manejar expresiones regulares de manera más avanzada, como Python o JavaScript.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment