Pregunta sobre una parte de código

Pregunta sobre una parte de código

Postby mastintin » Wed Sep 24, 2014 7:27 am

Crisobal , o cuanquiera que lo quiera mirar ....
En el fichero erfile.prg -> function NewReport()
Code: Select all  Expand view  RUN


.....

  SELECT 0
   CREATE VRDTMPST

   APPEND BLANK
   REPLACE FIELD_NAME WITH "NAME"   , FIELD_TYPE WITH "C", FIELD_LEN WITH 120, FIELD_DEC WITH 0
   APPEND BLANK
   REPLACE FIELD_NAME WITH "TEXTNR" , FIELD_TYPE WITH "N", FIELD_LEN WITH 4  , FIELD_DEC WITH 0
   APPEND BLANK
   REPLACE FIELD_NAME WITH "IMAGENR", FIELD_TYPE WITH "N", FIELD_LEN WITH 4  , FIELD_DEC WITH 0
   APPEND BLANK
   REPLACE FIELD_NAME WITH "GRAPHNR", FIELD_TYPE WITH "N", FIELD_LEN WITH 4  , FIELD_DEC WITH 0
   APPEND BLANK
   REPLACE FIELD_NAME WITH "BCODENR", FIELD_TYPE WITH "N", FIELD_LEN WITH 4  , FIELD_DEC WITH 0
   APPEND BLANK
   REPLACE FIELD_NAME WITH "TOP1"   , FIELD_TYPE WITH "N", FIELD_LEN WITH 6  , FIELD_DEC WITH 2
   APPEND BLANK
   REPLACE FIELD_NAME WITH "TOP2"   , FIELD_TYPE WITH "N", FIELD_LEN WITH 6  , FIELD_DEC WITH 2
   APPEND BLANK
   REPLACE FIELD_NAME WITH "LTOP"   , FIELD_TYPE WITH "L", FIELD_LEN WITH 0  , FIELD_DEC WITH 0
   APPEND BLANK
   REPLACE FIELD_NAME WITH "WIDTH"  , FIELD_TYPE WITH "N", FIELD_LEN WITH 6  , FIELD_DEC WITH 2
   APPEND BLANK
   REPLACE FIELD_NAME WITH "HEIGHT" , FIELD_TYPE WITH "N", FIELD_LEN WITH 6  , FIELD_DEC WITH 2
   APPEND BLANK
   REPLACE FIELD_NAME WITH "CONDITION" , FIELD_TYPE WITH "N", FIELD_LEN WITH 1  , FIELD_DEC WITH 0

   CREATE VRDTMP FROM VRDTMPST

   USE VRDTMP.DBF ALIAS "AREAS"
   APPEND BLANK
   REPLACE AREAS->NAME WITH "1. " + GL("Area")
   SetNewReportDefaults()
 ......

 


¿ alguien sabe el motivo por lo que esto se ha codificado asi ? ...
Se crea una dbf con unos campos para con ellos definir una estructura de otra dbf y crearla ?
Luego usa la dbf y al final graba en un ini y destuye la dbf .
No seria mas logico no usar dbs, guardarlo en arrays y grabarlo ?
No me creo que Tim codificase esto asi gratuitamente , pero que motivo existe ? .
Alguien que me lo aclare ? seguro que existe algo que se me escapa .
Gracias anticipadas.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Pregunta sobre una parte de código

Postby Antonio Linares » Wed Sep 24, 2014 10:41 am

Manuel,

Prueba a eliminar el uso de la DBF y solo el INI y si funciona, pues cuanto más simple, mejor :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42111
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Pregunta sobre una parte de código

Postby cnavarro » Wed Sep 24, 2014 5:31 pm

Manuel, yo los uso en mi aplicacion ficheros temporales en lugar de arrays para, en caso de error (si la aplicacion no es muy estable, o existen problemas de suministro electrico, etc.) tengo una rutina que lee los temporales existentes y en funcion de la letra por la que empiezan, sé en qué proceso estaban y me permite restaurarlo (por ejemplo un albaran)
Al principio de hacer pruebas en una aplicacion y ponerla en manos del cliente final, si no confías en la aplicacion, es lógico que guardes parcialmente los avances que hacen los usuarios para que no pierdan todo el trabajo, pero, evidentemente, faltaría la rutina que detecta al principio de la aplicacion que existen ficheros temporales para utilizarlos, y seguir en el estado que estabas.
Voy a revisar el codigo a ver si veo algo de lo que comento
De no ser asi, no le encuentro lógica tampoco
De hecho en las pruebas que realizo en el desarrollo me he encontrado con tener que borrar a mano mas de 70 temporales.

------------- EDITO ---------------------------------------------------
No encuentro de momento su funcionalidad
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Pregunta sobre una parte de código

Postby mastintin » Thu Sep 25, 2014 8:57 am

He subido código que quita el uso de dbfs temporales al crear nuevos reportes y pasa a usar arrays , está chapucero pero parece que funciona , comunicar bugs ,etc , falta limpiar el código y mejorarlo ....
Saludos.
------------------ edito --------------------------
He subido el código mas limpio y un poco mas optimizado ...
Doy por concluido este capitulo ( de momento ) y quedo a la espera de aparición de bugs y cambios menores ,salvo que se nos ocurra una mejor implementación.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Pregunta sobre una parte de código

Postby mastintin » Thu Sep 25, 2014 5:04 pm

Estoy en fase busca y captura de dbfs ... :D . He localizado donde se generan los temporales estos que quedan por decenas en el directorio raiz ...
El programa los usa para la función Undo/Redo y en teoria se borran al salirnos del programa , Que pasa si el programa casca ? ( como es el caso ya que estamos cambiando cosas ) , que ahi se quedan .
Tengo que comprobar si cuando se vuelve a entrar nueva mente esos archivos se usan , sino lo suyo sería colocarlos en un directorio /tmp y al iniciar el programa borrar todo lo que se encuentre en el ..
¿ Como lo veis ? .
¿Otra opción ? ¿ un ini ?
Espero opiniones .
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Pregunta sobre una parte de código

Postby mastintin » Thu Sep 25, 2014 9:01 pm

He decidido dejar las dbfs temporales para undo -redo pero ahora se colocan en un directorio temporal que el programa se encarga de borrar . Si por algo esto no se hace ( porque el programa rompe ) . La próxima vez que se lance el programa este , borra el directorio con su contenido y vuelve a crear de nuevo el directorio .
Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Pregunta sobre una parte de código

Postby Armando » Fri Sep 26, 2014 1:36 am

Manuel y amigos:

Disculpa que me entrometa solo para preguntar, :oops:

En un ambiente de red, que va a pasar con el directorio temporal si dos usuarios entran a definir o
modificar su propio reporte?.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Pregunta sobre una parte de código

Postby mastintin » Fri Sep 26, 2014 5:57 am

Buena observacion . Tendremos que cambiar el directorio temporal a temporal de windows asi cada uno tiene el suyo y no tenemos problemas ( igual que hace rpreview creo )

------------------ edito --------------------------------------
He cambiado el directorio temporal a un directorio colocado en el temporal de windows asi evitamos el problema sugerido por Armando . ( Gracias Armando por tu acertada sugerencia ) .
Subido al repositorio . :D
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Pregunta sobre una parte de código

Postby devtuxtla » Tue Nov 11, 2014 11:50 pm

Hola Mastintin.

He tenido muy malas experiencias usando el directorio temporal de windows, ya que W7 y W8 tienen restricciones sobre su uso.
Un usuario que NO es administrador de ese equipo, puede no tener derechos de escritura sobre todo C:\WINDOWS

Lo que he encontrado como solucion, es crear un directorio temporal sobre el directorio donde se ejecuta la aplicacion, asi, este puede borrarse si es necesario.

NO usar los directorios de windows, le da a la aplicacion independencia del sistema operativo.

saludos
Visite Chiapas, el paraiso de México.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Pregunta sobre una parte de código

Postby hmpaquito » Wed Nov 12, 2014 11:21 am

c:\windows\temp es distinto al contenido de %temp%
Quiza %temp% siempre este disponible para el usuario.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Pregunta sobre una parte de código

Postby mastintin » Thu Nov 13, 2014 11:40 am

hmpaquito wrote:c:\windows\temp es distinto al contenido de %temp%
Quiza %temp% siempre este disponible para el usuario.

Efectivamente va al temporal del usuario donde siempre se tienen permiso de escritura.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm


Return to EasyReport, EasyDialog y EasyPreview

Who is online

Users browsing this forum: No registered users and 3 guests