FoxPro/Visual FoxPro - comparar lineas en dos archivos de texto

 
Vista:
sin imagen de perfil
Val: 45
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

comparar lineas en dos archivos de texto

Publicado por OMAR (23 intervenciones) el 20/05/2019 22:17:22
HOLA BUENAS TARDES A TODOS LOS INTEGRANTES DE ESTE FORO:
Ante todo quiero resaltar el valioso aporte que este foro me a brindado.
Mi consulta es el siguiente: Estoy utilizado un sistema de mensajería privado similar al outloock, el problema es que constantemente se están actualizando los e-mail y si alguna área no actuan la lista de e-mail surge el inconveniente de que no llega a algunos destinatarios.
Tengo dos archivos .txt, uno con la lista generalizada de E-mails y otro con una lista puntual al cual se incluyen únicamente los destinatarios de cara Email, quisiera saber si hay algún método que me pueda comparar si el contenido del .txt1 es igual o distinto al .txt2, en caso afirmativo que remarque el E-mail que no coincida.-
No se si me exprese bien o si se entendió lo que intento resolver.

desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

comparar lineas en dos archivos de texto

Publicado por Fidel José (657 intervenciones) el 20/05/2019 23:57:08
Tratándose de archivos de texto, siempre tenemos que aclarar de qué tamaño pueden llegar a ser y si se utiliza algún método de marcado (tipo xml por ejemplo).
Para empezar, Visual Fox puede manejar archivos de texto menores de 2GB.

La comparación de contenido puede resultar sencilla o no, dependiendo del objetivo.
IF FILETOSTR(lcFileName1) == FILETOSTR(lcFileName2)
* Los archivos son iguales
ELSE
* Tienen alguna diferencia (o son totalmente distintos).

ENDIF

Posibilidades:
a) El archivo 1 tiene algunos contenidos que no están en 2 y el archivo 2 tiene algunos contenidos que no están en 1
b) El archivo 1 tiene algunos contenidos que no están en 2 pero todos los contenidos del archivo 2 se encuentran en 1
c) Viceversa de b)

De la exposición de tu pregunta, me surgen las siguientes dudas:
1) A qué llamas e-mail?
2) Dado que uno es general y el otro trata algunas particularidades, tienen posibilidad de ser iguales más allá del primer caso?
3) Estás buscando diferencias entre dos archivos o solamente necesitas saber si determinados contenidos de un archivo se encuentran ya en el otro?
4) Los archivos txt utilizan marca de fin de línea CHR(10), CHR(13) ó CHR(13) + CHR(10) ?
5) Se puede determinar dónde comienza un registro y dónde termina?

Por ahí mostrando los formatos de ambos archivos se puede encontrar una solución que no sea tan lenta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 45
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

comparar lineas en dos archivos de texto

Publicado por OMAR (23 intervenciones) el 21/05/2019 05:01:13
hola como estas. Gracias por tu pronta respuesta, te vos a ser un mas especifico.
el sistema de mensajería que utilizo toma las direcciones de correo de un archivo .txt llamado destinatarios.txt en el cual están agregados los correos de todas las sucursales de la empresa; este archivo destinatarios.txt tiene este formato

ADM CEN
[email protected]
SUC1
[email protected]
suc2
[email protected]
suc3
[email protected]
suc4
[email protected]
suc5
[email protected]
suc100
[email protected]

esto se extiendo hasta 80/100 usuario

bien como veras la primer linea seria el nombre de usuario de correo y la 2da linea la dirección de correo.
al momento de transmitir un correo se hace únicamente por el sistema que manejo, cada área confecciona el correo con un editor del mismo pero sin posibilidad de transmitirlo, una ves aprobado el envió del mismo me lo traen en un pend y lo transmito. En el archivo .txt que se genera al confeccionar el mensaje están los destinatarios del correo, pero a diferencia de la lista original contenido en el archivo destinatarios.txt que posee el sistema de mensajería este viene con un archivo similar en el cual en la 7ma linea están los destinatarios y en la 8va linea los que van como CC (copia carbon) y estarían con este formato en una sola linea y únicamente con nombre de los usuarios ya que la dirección de correo lo carga el sistema al momento de transmitir

7ma linea= suc1 ,suc45 ,suc10 ,suc5 ,suc80
8va linea = suc5 ,suc30 ,suc19 ,suc12 ,suc75

como veras la disposición de este archivo es distinto al del primero, ya que esta estan en linea mientas el 1ro esta en una columna. intente comparar ambos archivos convirtiendo el 1ro de .txt a .dbf, funciona pero unidamente si escribo "suc1" sin coma y obviando el resto de la linea, las lineas 7 y o se refleja en un edit1 y edit2, respectivamente.
el punto es que me seria muy útil verificar que estos usuarios coincidan con la lista de usuarios que posee el sistema de mensajería el cual lo describí al inicio.
o sea:
destinatario.txt del sistema de mensajería sea igual a destinatario del editor de mensajería.-

bueno nuevamente te agradezco la colaboración espero haberme explayado bien, cualquier ayuda me seria muy útil.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

comparar lineas en dos archivos de texto

Publicado por Fidel José (657 intervenciones) el 21/05/2019 16:12:12
No sé exactamente si lo que sigue responde a tu objetivo, pero en todo caso, podés extraer de eso un método de comparación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
PROCEDURE COMPARE_CORREO
*---------------------------
LPARAMETERS tcFile1,tcFile2
 
*<ParaEnsayo>
	IF VARTYPE(m.tcFile1)#"C" OR EMPTY(m.tcFile1)
		tcFile1 = "c:\Theodore\Temp\mas\correo1.txt"
	ENDIF
 
	IF VARTYPE(m.tcFile2)#"C" OR EMPTY(m.tcFile2)
		tcFile2 = "c:\Theodore\Temp\mas\correo2.txt"
	ENDIF
*</ParaEnsayo>
 
*!*	<correo1>
*!*	ADM CEN
*!*	admcen@correo.sist
*!*	SUC1
*!*	suc1@correo.sit
*!*	suc2
*!*	suc2@correo.sit
*!*	suc3
*!*	suc3@correo.sit
*!*	suc4
*!*	suc4@correo.sit
*!*	suc5
*!*	suc5@correo.sit
*!*	suc100
*!*	suc100@correo.sit
 
*!*	</correo1>
 
*<correo2>
*!*	L1
*!*	L2
*!*	L3
*!*	L4
*!*	L5
*!*	L6
*!*	suc1 ,suc45 ,suc10 ,suc5 ,suc80
*!*	suc5 ,suc30 ,suc19 ,suc12 ,suc75
*</correo2>
 
TRY
	LOCAL loex as Exception,;
		lnlinL,lnLinR,;
		lcTry,;
		lcString_dir,;
		lcString_NotFound
 
	LOCAL ARRAY laLinL(1), laLInR(1)
 
	lnLinL = ALINES(laLinL,FILETOSTR(m.tcFile1),1+4,CHR(9),CHR(10),CHR(13))
 
	lnLinR = ALINES(laLinR,FILETOSTR(m.tcFile2),1+4,CHR(9),CHR(10),CHR(13))
 
	lcString_NotFound = ""
	lcString_Dir = CHR(44)+CHRTRAN(laLinR[7]+laLinR[8],CHR(32),"")+CHR(44)
 
 
	FOR i = 1 TO m.lnLinL
		IF EMPTY(AT("@",laLinL[i]))
			lcTry = laLinL[i]
			IF EMPTY(AT(CHR(44)+m.lcTry+CHR(44),m.lcString_Dir))
				lcString_NotFound = m.lcString_NotFound ;
					+ m.lcTry ;
					+ CHR(13) + CHR(10)
			ENDIF
		ENDIF
	NEXT
 
	IF EMPTY(m.lcString_NotFound)
		MESSAGEBOX("No faltan direcciones de correo",0,PROGRAM())
	ELSE
		MESSAGEBOX("Faltan las siguientes direcciones:"+CHR(13)+m.lcString_NotFound,0,PROGRAM())
	ENDIF
 
 
 
 
CATCH TO loex
	loex.UserValue = PROGRAM()
	* showerror(loex)  && rutina que muestra el error, si se produce
 
FINALLY
 
ENDTRY
ENDPROC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 45
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

comparar lineas en dos archivos de texto

Publicado por Omar (23 intervenciones) el 21/05/2019 16:57:14
Hola cómo estás, te agradezco la gentileza, en cuanto aplique lo que me enviaste, aviso cómo me fue. Te agradezco nuevamente por el aporte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar