FoxPro/Visual FoxPro - leer y copiar lineas de archivo txt desde vfp

   
Vista:

leer y copiar lineas de archivo txt desde vfp

Publicado por celso (31 intervenciones) el 12/04/2014 18:46:21
Hola buenos días a todo el foro:
El inconveniente que tengo es el siguiente ya que no tengo conocimientos avanzados de vfp, necesito leer la 4ta y 5ta linea de un archivo.txt que en este caso serian alfanuméricos y asignarlos a un textbox en este caso seria la cuarta y quinta linea (4-5) separados por un guion que no superarían los 15 caracteres ej;
text1:123a-4587a
desde ya muchas gracia por la predisposición.-
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

leer y copiar lineas de archivo txt desde vfp

Publicado por Fidel José (558 intervenciones) el 13/04/2014 15:19:10
Esta puede ser una solució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
* Se crea un método de usuario en el formulario, llamado "GetArchivo"
* Podría ser un procedure de PRG. o un método en una clase custom, etc.
 
* Llamada al método
thisform.text1.Value=thisform.getarchivo( , 4 , 5 ,CHR(45))
* ----------------------------------
 
* -------- metodo -------------------
*PROCEDURE getArchivo
LPARAMETERS pcFile,pnFirst,pnLast,pcSeparator
LOCAL lnHand,lnCount,LcGet,LcSTring,;
	lcFile,lnFirst,lnLast,lcSeparator
STORE 0 TO lnCount
STORE "" TO lcString
lnFirst=IIF(!EMPTY(pnFirst) and VARTYPE(pnFirst)="N",pnfirst,4)
lnLast=IIF(!EMPTY(pnLast) AND VARTYPE(pnLast)="N",pnLast,5)
lcSeparator=IIF(!EMPTY(pcSeparator) and VARTYPE(pcSeparator)="C",pcSEparator,CHR(45))
lcFile=pcFile
 
*<Obtiene el nombre de archivo (o es un parámetro)
IF VARTYPE(lcFile)#"C" OR EMPTY(lcFile)	
	lcfile=GETFILE("txt")
	IF EMPTY(lcFile)
		RETURN ""
	ENDIF
ENDIF
 
*<Intenta abrir archivo>
lnHand=FOPEN(lcfile,0)
IF m.lnHand<0
	MESSAGEBOX("No se pudo abrir el archivo "+lcFile)
	RETURN ""
ENDIF
 
*<Recorrer el archivo abierto>
FSEEK(m.lnHand,0,0)
DO WHILE !FEOF(m.lnHand)
	lcGet=FGETS(m.lnHand,2048)
	lnCount = m.lnCount + 1
	IF BETWEEN(m.lnCount,m.lnFirst,m.lnLast)
		* Se toma el valor sin espacios delante y detrás
		* El archivo puede tener tabuladores (chr(9) que se eliminan
		lcString=m.lcString ;
			+ ALLTRIM(CHRTRAN(m.lcGet,CHR(9),"")) ;
			+ m.lcSeparator
	ENDIF
ENDDO
=FCLOSE(m.lnHand)
 
*<Evaluar resultados>
IF EMPTY(lcString)
	MESSAGEBOX("No se encontró contenido")
	RETURN ""
ENDIF
 
*<Publicar resultados>
RETURN LEFT(m.lcSTring,LEN(m.lcString)-1)
 
*ENDPROC
 
*!*	<Nota>
*!*	Si los renglones a leer no son contiguos, se puede
*!*	definir un Array que contenga los números de líneas.
*!*	También se puede identificar un inicio de área de
*!*	lectura (determinar tags).
*!*	Por ejemplo, este texto tiene etiquetas tipo xml
*!*	<PICTURE>imaarenaaten31.bmp</PICTURE>
*!*	<TITLE>Mercaderías Transportadas</TITLE>
*!*	<ICON>c:\theodore\graphics\fibona5inv.ico</ICON>
*!*	<BACKCOLOR>RGB(184,201,197)</BACKCOLOR>
*!*	<METOD>PICTURE</METOD>
*!*	</Nota
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

leer y copiar lineas de archivo txt desde vfp

Publicado por Celso Omar yo_28_2@yahoo.com.ar (31 intervenciones) el 17/04/2014 18:06:22
hola como estas gracias por tu pronta respuesta. estuve tratando de aplicar en un .prg las instrucciones que me diste, pero surge un cartel de error que dice thisform solo puede usarse en un metodo. de seguro no lo estoy haciendo bien casi nunca llamo un .prg desde un form. quisas no al llamar al .prg desde un command no lo estoy haciendo bien.
si no es muchas molestia serias tan amable de ayudarme con esas instrucciones para poder llamar al .prg desde un command.

disculpa las molestias y muchas gracias por tu aporte. te mando un abraso.-
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

leer y copiar lineas de archivo txt desde vfp

Publicado por Celso Omar yo_28_2@yahoo.com.ar (31 intervenciones) el 18/04/2014 17:59:42
hola buenos dias:
quería avisarte que ya soluciones el inconveniente que te comente anteriormente, y funciona de 10 muchas gracias por tu aporte.
Si no es muchas molestia te hago una consulta mas al respecto hay posibilidad de que se pueda agregar al final del text1 en este caso una extenciòn ".pdf" así cuando guardo el archivo me lo guarde con esa extencion
Ej:text1:123a-4587a.pdf
Esto se me paso y no te aclare al respecto en la 1er pregunta.

Desde ya muchas gracias por tu aporte y me gustaría aprender mas relacionado a este tema es decir como tomar datos de un archivo externo a vfp, si no es mucho pedir y si esta dentro de las posibilidades serias tan amable de enviarme algunos apuntes o guía de como tomar datos de un archivo .txt u otros tipo de documento para poder asi seguir aprendiendo y aplicarlos a las necesidades que pueda tener .
te pido ese favor como te comente anteriormente soy nuevo tengo conocimientos vasicos y por lo general solo me manejo con base de datos de vfp. estuve leyendo las ayudas de vfp pero si no tengo a alguien que me explique y me guié se me es muy difícil volcarlos a los que intento hacer.

Nuevamente te agradezco por tu aporte y estaré pendiente a tu respuesta.-
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

leer y copiar lineas de archivo txt desde vfp

Publicado por Fidel José (558 intervenciones) el 19/04/2014 13:46:58
thisform.text1.Value=FORCEEXT(thisform.getarchivo( , 4 , 5 ,CHR(45)), "pdf" ) && si es un método del form

ó
thisform.Text1.Value=FORCEEXT( getArchivo( , 4,5,CHR(45), "pdf" ) && si getARchivo está en un prg
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

leer y copiar lineas de archivo txt desde vfp

Publicado por celso omar yo_28_2@yahoo.com.ar (31 intervenciones) el 21/04/2014 13:40:42
Hola buenos Dias:
muchas gracias por tu aporte me me vino de 10 los que me pasaste, pronto estare haciendote otras consultas.
te mando un abraso.-
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

VALIDAR VARIABLES

Publicado por celso omar (31 intervenciones) el 25/04/2014 04:44:21
HOLA BUENAS NOCHES ESTIMADO EXPERTO DE VFP:
Continuando con el desarrollo de la aplicación que estoy haciendo gracias a la gran ayuda que me brindaste, me encuentro con las siguiente dificultad:
necesito validar unos datos en este caso de la linea 7 y 8 del .txt los cual los lee perfectamente y me muestra el resultado en un textbox.
text1:DIR MAT ,MM ORG ,MM PERS ,DIR GRL SALUD ,MM INFRA ,DIR INT ,DIR REM ,MM TRANS ,
ahora bien los que estan en negrita pueden estar todos o no pero si o si en la linea 7/8 figura uno de ellos.
el incombeniente que tendo es el siguiente necesito validarlos para que cada uno de ellos de los (3) se asigne a una base de datos en la cual tengo cargaro una ruta en la cual se almacenan ya que on correos con distintos destinatarios pero solo me interesan estos 3.ej:

TEXTO=thisform.getarchivo( , 7 , 8 , CHR(44))
cadenaABuscar = "MM PERS"
FOR i = 1 TO OCCURS(cadenaABuscar, texto)
?RAT(cadenaABuscar, texto, i)
ENDFOR
*SELECT 1 &&bd de rutas
thisform.text4.value=MM_PERS &&campo de tabla en la q se almacena una ruta predeterminada
ej:c:\mensajes\MM _PERS
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ELSE
TEXTO=thisform.getarchivo( , 7 , 8 , CHR(44))
cadenaABuscar = ",MM ORG"
FOR i = 1 TO OCCURS(cadenaABuscar, texto)
?RAT(cadenaABuscar, texto, i)
ENDFOR
*SELECT 1&&bd de rutas
Thisform.textO2.value=,MM_ORG &&campo de tabla en la q se almacena una ruta predeterminada
ej:c:\mensajes\MM ORG
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ELSE
TEXTO=thisform.getarchivo( , 7 , 8 , CHR(44))
cadenaABuscar = "MM INFRA"
FOR i = 1 TO OCCURS(cadenaABuscar, texto)
?RAT(cadenaABuscar, texto, i)
ENDFOR
SELECT 1&&bd de rutas
Thisform.texto3.value=MM_INFRA &&&&campo de tabla en la q se almacena una ruta predeterminada
ej:c:\mensajes\MM_INFRA

bien como te habas dado cuenta esta rutina no funciona y la verdad mis conocimientos son limitados y no conozco muchas variantes par validar. Lo que necesito es que funcione de la siguiente manera:
1ro-- que busque en la en la linea 7/8 si existe esta variante"MM PERS" si existe que en el text4 me indique la ruta almacenada ya por defecto, sino que busque la si siguiente variable "MM ORG" text2 y que efectué el mismo proceso, luego "MM INFRA" text3 y el mismo proceso.
hasta el momento me valida solo el primer proceso y si se da la condición me carga las otros 2 variable por mas que no existan en la linea 7/8.
si funcionara bien deberia cargar la ruta en el text correspondiente solo los que cumplan con la condicion, UNA VEZ LOGRADO ESTO YA ESTARIA FUNCIONADO CON TODAS LAS FACILIDADES QUE NECEITO. "Lo cual seria Recibir el mail descargarlo en una carpeta y con la Aplicaion distribuirlos en las 3 carpeta segun corresponda el destinatario" ,

EJ TEXT4: c:\mensajes\MM ORG
TEXT2:c:\mensajes\MM INFRA
TEXT3:c:\mensajes\"MM ORG

una vez mas de entamando te agradezco por todo los aporte que me brindaste y espero con tu ayuda poder solucionar este ultimo inconveniente.
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

copiar y modificar nombre de un txt

Publicado por celso omar yo_28_2@yahoo.com.ar (31 intervenciones) el 13/05/2014 22:56:03
hola como estas:
una vez mas me pongo en contacto para solucionar un inconveniente,te paso a comentar la situación:
tengo un reporte llamado "datos" del cual hago un backup cada vez que lo imprimo ya que al hacerlo la base de datos queda limpia y empiezo a cargarlo de nuevo hasta q tengo la necesidad de imprimir nuevamente. ahora buien pude hacer un backup en .txt el cual queda con el nombre del reporte, lo que necesitaría es al reporte "datos.txt" agregarle a continuación del nombre la fecha y la hora algo asi como un (datetime()), y que el nombre quede algo así "datos 05/13/2041 10:15.txt"
desde ya te agradezco por la ayuda brindada.-
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

cerrar un archivo .pdf abierto para luego eliminarlo

Publicado por celso yo_28_2@yahoo.com.ar (31 intervenciones) el 30/07/2014 18:03:23
hola como estas buenos dias, ante todo agradezco cualquier aporte que me puedas brindar.
tengo una aplicación que abre e imprime un archivo .pdf y quisiera saber si hay una forma de que una vez que finalice de imprimir el archivo me lo cierre automáticamente así lo elimino de la carpeta de destino ya que de lo contrario tengo que cerrarlo manualmente e ir a la carpeta de origen y eliminarlo.
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

cerrar un archivo .pdf abierto para luego eliminarlo

Publicado por Fidel José (558 intervenciones) el 31/07/2014 15:43:24
Para imprimir solamente yo uso PDFCreator. Se instala como una impresora de Windows, por lo que lo único que hay que hacer es enviar la impresión y luego si quieres, borras el archivo. PdfCreator soporta automatización (nunca la usé, pero he visto algunos trabajos con eso).
Este es un ejemplo que no he testeado.
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
* Enviado por Richard Gaviria
* En tu botón "Generar PDF" colocas lo siguiente:
 
MiReporte="hojavida5.frx"
RutaParaGuardaro="C:\Reportes\"
NombrePDF_Como_quedara="Nombre_del_Reporte"
=GeneraPDF(MiReporte,RutaParaGuardaro,NombrePDF_Como_quedara)
 
Procedure GeneraPDF
Lparameters cNameReport, cNameDirTarget, cNameFilePdf
Local oPdf As Object
oPdf= Createobject("PDFCreator.clsPDFCreator")
With oPdf
.cStart
.cVisible = .T.
.cclearCache
.cPrinterStop = .T.
.cOption("AutosaveDirectory") = cNameDirTarget
.cOption("AutosaveFilename")= cNameFilePdf
.cOption("UseAutosave")= 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveFormat") = 0
.cOption("PDFUseSecurity") = 1
.cOption("PDFHighEncryption") = 1
.cOption("PDFOwnerPass") = 0
.cOption("PDFOwnerPasswordString") = "tu_contraseña"
.cPrinterStop = .F.
.cSaveOptions()
ENDWITH
Set Printer To Name 'PDFCreator'
 
Report Form (cNameReport) To Printer Nodialog Noconsole
 
* esto se lo agrego yo
set  printer to
opdf=null
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

leer y copiar lineas de archivo txt desde vfp

Publicado por Galo Cruz gdpsa1000@yahoo.com (5 intervenciones) el 18/02/2015 02:52:11
Excelente aporte Fidel, me ayudo mucho, mil gracias!
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