Inicio > Visual FoxPro > alonso197 > grabar en dbf solo las direcciones de correo de un txt

grabar en dbf solo las direcciones de correo de un txt

Experto:
Usuario:
Fecha: 08/11/2009
Valoración: (4,00 sobre 5) Categoría: Visual FoxPro
02/11/2009
jolo260, usuario preguntando en Visual FoxPro
Usuario
buenas
lo que necesito es recorrer un archivo de texto en los cuales se encuentran indistintamente direcciones de correo y otras palabras asi como el sgte ejemplo:
From: chelyn202@hotmail.com
To: agiagni@hotmail.com; albertini_cl@hotmail.com; val_especial@hotmail.com; ana.gam@hotmail.com; andretty_rj@hotmail.com; cathia_na74@hotmail.com; clau_mccm@hotmail.com; claudiovl@hotmail.com; claudiaverallano@hotmail.com; cynthian15@hotmail.com;
lo que quiero es recorrer este archivo y grabar en una tabla solo dos datos ejem:
     campo_correo          campo_servidor
agiagni@hotmail.com         hotmail
si tienes alguna rutina que me ayude a realizar esto... y asi poder grabar los datos que necesito.
desde ya muchas gracias
03/11/2009
jolo260, experto respondiendo en Visual FoxPro
Experto
Hola el siguiente código puede servirte de ayuda:
Supongamos que tenemos guardado un archivo *.txt en el ordenador el cual tiene guardados unos correos como el que especificas arriba.
Local cnControladorArch,nTamaño,cCadena, lcPos, a, b
cnControladorArch = FOPEN("D:\correos.txt")
* Busca hasta el final del archivo para determinar el número
* de bytes en el archivo.
nTamaño = FSEEK(cnControladorArch, 0, 2) && Lleva el puntero a EOF.
IF nTamaño <= 0
* Si el archivo está vacío, muestra un mensaje de error.
WAIT WINDOW "Este archivo está vacío." NOWAIT
ELSE
* Si el archivo no está vacío, el programa almacena su contenido
* en memoria, después muestra el texto en la ventana principal de
* Visual FoxPro.
= FSEEK(cnControladorArch, 0, 0) && Mueve el puntero a BOF.
cCadena = FREAD(cnControladorArch, nTamaño)
ENDIF
= FCLOSE(cnControladorArch) && Cierra el archivo.
lcPos = At("To:", cCadena)
cCadena = Substr(cCadena, lcPos + 4, Len(cCadena))
a = Getwordcount(cCadena, ";")
For i = 1 To a
b = Getwordnum(cCadena, i, ";")
Do Case
Case Atcc("Hotmail", b) > 0
Insert Into Tabla (campo_correo, campo_servidor) Values (b, "Hotmail")
Case Atcc("Yahoo", b) > 0
Insert Into Tabla (campo_correo, campo_servidor) Values (b, "Yahoo")
Case Atcc("Latinmail", b) > 0
Insert Into Tabla (campo_correo, campo_servidor) Values (b, "Latinmail")
Case Atcc("Gmail", b) > 0
Insert Into Tabla (campo_correo, campo_servidor) Values (b, "Gmail")
Endcase
Endfor
Estamos hablando...
08/11/2009
jolo260, usuario preguntando en Visual FoxPro
Usuario
justo lo que necesitaba,muchas gracias!!!
Enlaces patrocinados