Hola
Todos venimos de Clipper, y soliamos utilizar el famomo HEADMAIN.MEM que no era mas que un file donde guardabamos variables de memoria, herede esta costumbre al paso al FiveWin (16 bits) aun, y sospecho que me esta generando los problemas de GPF, las variables contenidas en este archivo pasan a ser PUBLICAS y por ende ocupan recursos de memoria?, he intentado urtilizar un array y #Xtraslate pero no tengo buen resultado, Antonio a lo mejor hay alguna solucion.
Gracias
ARCHIVOS .MEM
ARCHIVOS .MEM
Luis Ponce
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Hola Antonio
Gracias por tu respuesta, en ese file guardo los nombres de las tablas que utilizo, Pictures y otras :
USE &FIL01
USE &FIL02.....
Como comprenderas son casi com cincuenta, y parametros de mis sistemas, decimales, ruta de mi servidor, impuestos y demas.
y lo abro al inicio del sistema, en mi modulo principal algo asi como esto :
#include "FiveWin.ch"
#include "Folder.ch"
#include "Report.Ch"
#include "SSay.ch"
#Include "Ord.Ch"
STATIC oWnd,hBorland,oMenu,oCursorMano
STATIC cVersion:="Ventas Ver. 7.0"
STATIC cMiCia :=""
STATIC cMiRuc :=""
STATIC cMiDir :=""
STATIC cMiDi2 :=""
STATIC cMiDi3 :=""
STATIC cMiPro :=""
STATIC cMiCom :=""
STATIC cMiMail :="la_ponce@hotmail.com"
//----------------------------------------------------------------------------//
Function Main()
LOCAL oBrush,oIco,oBarraBotones
LOCAL oBtnCaptura,oBtnParametros,oBtnCalculador,oBtnClient,oBtnProveed,oBtnABusca,oBtnArticulos,oBtnReindexa,oBtnSalir,oBtnCotiza,oBtnCaja,oBtnTactil,oBtnInternet
LOCAL oBmp,oFont,oFontComic,oMiCasilla,oTcCasilla,oNetCasilla
LOCAL cBrocha,cLogoInicial,aMiCia
LOCAL lValidaSys,lValidaRed
PUBLIC cCodFilial:=""
PUBLIC cNomFilial:=""
PUBLIC cAbrFilial:=""
PUBLIC TCambio,lFilCentral
PUBLIC mmUsuario,mmInicial,mmNombre,mmAcceso,mmUltimo,mmModulo,mmIngreso,mmRegPss
PUBLIC cImpNet,cImpLoc,cImpXls
hBorland := LoadLibrary( "BWCC.DLL" ) // Loading Borland's dll
SET RESOURCES TO "VT20998.dll"
SET DATE GERMAN
SET _3DLOOK ON
RESTORE FROM HEADMAIN
RESTORE FROM HEADIMPT ADDITIVE
lValidaSys := ValidaSys()
lValidaRed := ValidaRed()
aMiCia := IF(lValidaSys,QMiCia(),{ "INTEL SOFT S.C.R.Ltda.", "Av. de la Cultura 1-A","20225059559","PacificSoft" })
cMiCia := aMiCia[1]
cMiDir := aMiCia[2]
cMiRuc := aMiCia[3]
cMiCom := aMiCia[4]
cBrocha := BcaTapiz(TRIM(IMPTPZ))
cLogoInicial:= TRIM(IMPLG0)
nWindows := IIF(IsWin95(),1,2).....
DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-10 // ancho,alto
DEFINE FONT oFontComic NAME "Comic Sans Ms" SIZE 8, 15
DEFINE ICON oIco RESOURCE "ICONO"
DEFINE CURSOR oCursorMano RESOURCE "Hand"
IF nWindows=1 // Windows 95/98
IF lValidaRed
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
BRUSH oBrush ;
ICON oIco ;
MENU IIF(lValidaSys.and.lValidaRed,BuildMenu(),SalirMenu())
ELSE
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
BRUSH oBrush ;
ICON oIco ;
MENU SalirMenu()
ENDIF
ELSE
IF lValidaRed
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
ICON oIco ;
MENU IIF(lValidaSys.and.lValidaRed,BuildMenu(),SalirMenu())
oWnd:bPainted = { | hDC | PalBmpDraw( hDC, 0, 0, oBrush:hBitmap, oWnd:nWidth, oWnd:nHeight ) }
ELSE
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
ICON oIco ;
MENU SalirMenu()
oWnd:bPainted = { | hDC | PalBmpDraw( hDC, 0, 0, oBrush:hBitmap, oWnd:nWidth, oWnd:nHeight ) }
ENDIF
ENDIF
oWnd:Say( 3, 16, aMiCia[4], nRGB( 25, 40, 95 ), nRGB( 192, 192, 192 ),oFontComic )
DEFINE BUTTONBAR oBarraBotones; // Se define Barra de Botones (Objeto: BUTTONBAR).
SIZE 42,42; // Tama¤o en pixeles de los botones
3D; // Vista en efecto 3¦ dimensi¢n
TOP; // Se despliega en la parte superior de la ventana.
OF oWnd; // Se indica que pertenece
CURSOR oCursorMano // Se define tipo de cursor al posicionarse en la barra.
DEFINE BUTTON oBtnClient RESOURCE "Bmp_Clientes" OF oBarraBotones ;
TOOLTIP "Clientes";
NOBORDER ;
ACTION Click(),MovClte(oWnd,cVersion,cMiCia);
WHEN lValidaSys.and.lValidaRed ;
MESSAGE "Archivo de Clientes"
DEFINE BUTTON oBtnArticulos RESOURCE "Bmp_Articulos" OF oBarraBotones ;
TOOLTIP "Articulos";
NOBORDER ;
ACTION (Click(),MovItem(oWnd,cVersion,cMiCia));
WHEN lValidaSys.and.lValidaRed ;
MESSAGE OemToAnsi("Archivo de Articulos")
DEFINE BUTTON oBtnProveed RESOURCE "Bmp_Proveedores" OF oBarraBotones ;
TOOLTIP "Proveedores";
NOBORDER ;
ACTION (Click(),MovProv(oWnd,cVersion,cMiCia));
WHEN lValidaSys.and.lValidaRed ;
MESSAGE "Archivo de Proveedores"
SET FONT OF oWnd TO oFont
SET MESSAGE OF oWnd ;
TO "Software a Medida by Pacific(s)Soft" NOINSET CENTERED KEYBOARD TIME DATE
/*** Define tus propias casillas:... ***/
DEFINE MSGITEM oMiCasilla OF oWnd:oMsgBar;
PROMPT "Operador";
SIZE 100 COLOR "R*/BG" ;
ACTION (Click(),InfoUsuario())
DEFINE MSGITEM oNetCasilla OF oWnd:oMsgBar;
PROMPT "Ruta de Servidor";
SIZE 150 COLOR "G+/N" ;
ACTION (Click(),Dlg_Parametro(oWnd,cMiCia,cMiCom,cMiDir,cMiRuc),oNetCasilla:SetText(TRIM(IMPNET)))
DEFINE MSGITEM oTcCasilla OF oWnd:oMsgBar;
PROMPT "T. de Cambio";
SIZE 110 COLOR "GR+/N" ;
ACTION (Click(),TCambio:=Cambio(oWnd),oTcCasilla:SetText("T.C. "+TRANS(TCambio,MA43)))
ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT (SetHandleCount(80),;
IngPasse(),;
ConfigSet(),;
oNetCasilla:SetText(TRIM(IMPNET)),;
oMiCasilla:SetText(mmUsuario),;
Matrices(),;
CreaDbfNtx(.f.),;
TCambio:=Cambio(oWnd),;
oTcCasilla:SetText("T.C. "+TRANS(TCambio,MA43)),;
LogoInicio(cLogoInicial),;
oWnd:SetText(cMiCia+" - "+UPPER(TRIM(cNomFilial))),;
IIF(IMPSND,SndPlaySound( "..\Sonidos\Notify.wav" ),"") ) ;
VALID MsgYesNo( "Salir del Sistema" ,cVersion)
DIRCHANGE("\FWVENTAS\DATA")
IMPOSV:=nWindows
IMPHOY:=DATE()
IMPNTX:=.F.
* Mascaras para PICTURE
IMPMPV:=IIF(!EMPTY(IMPDPV),"999,999"+"."+REPL("9",IMPDPV),"999,999")
IMPMPC:=IIF(!EMPTY(IMPDPC),"999,999"+"."+REPL("9",IMPDPC),"999,999")
IMPMUM:=IIF(!EMPTY(IMPMUM),"999,999"+"."+REPL("9",IMPDUM),"999,999")
SAVE TO HEADIMPT ALL LIKE IMP* FIL* MA*
SET RESOURCES TO // Desactivamos los recursos definidos.
FreeLibrary( hBorland ) // We have finish with it
Return nil
Y abro todavia dos, y como veras los IMP* FIL* y mascaras para PICTURE las pongo en un MEM me ha funcionado muy bien el Clipper puro pero ahora con regular exito.
Estoy con Clipper 5.3b FW 2.4 y Blinker 7.0
y el LNK
BLINKER CLIPPER SYMBOL OFF
BLINKER EXECUTABLE COMPRESS
BLINKER EXECUTABLE CLIPPER F30
MAP A,S
PACKCODE
PACKDATA
// If you use Mr. Debug for Windows product
// search c:\mrdebug\lib\mrd4win.lib
FILE VT20999, VT20998, VT20100, VT20150, VT20199, VT20200, VT20299, VT20300, VT20400, VT20500, VT20550, VT20600, VT20700, VT20710, VT20800, VT20900, VT20340, VT20000
FILE TGET, TGRAPH, TDOSPRN, SSAY,TCBROWSE, fwcalen,F:\clip53\obj\mpar
DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
exetype Windows 3.1
code moveable discardable
data preload moveable
stacksize 10500
heapsize 8500
segment 'PLANKTON_TEXT' nondiscardable
segment 'EXTEND_TEXT' nondiscardable
segment 'OM_TEXT' nondiscardable
segment 'OSMEM_TEXT' nondiscardable
segment 'SORTOF_TEXT' nondiscardable
segment 'STACK_TEXT' nondiscardable
DEFEND
NOBELL
SEARCH Five, FiveC, Objects, SBROWSE
BTNGET, FILEXLS
LIB WinApi, Clipper, Extend, Terminal, dbfcdx, _dbfcdx, CTP53, BTNGET, FILEXLS
GRACIAS
Att.
Luis Ponce
Gracias por tu respuesta, en ese file guardo los nombres de las tablas que utilizo, Pictures y otras :
USE &FIL01
USE &FIL02.....
Como comprenderas son casi com cincuenta, y parametros de mis sistemas, decimales, ruta de mi servidor, impuestos y demas.
y lo abro al inicio del sistema, en mi modulo principal algo asi como esto :
#include "FiveWin.ch"
#include "Folder.ch"
#include "Report.Ch"
#include "SSay.ch"
#Include "Ord.Ch"
STATIC oWnd,hBorland,oMenu,oCursorMano
STATIC cVersion:="Ventas Ver. 7.0"
STATIC cMiCia :=""
STATIC cMiRuc :=""
STATIC cMiDir :=""
STATIC cMiDi2 :=""
STATIC cMiDi3 :=""
STATIC cMiPro :=""
STATIC cMiCom :=""
STATIC cMiMail :="la_ponce@hotmail.com"
//----------------------------------------------------------------------------//
Function Main()
LOCAL oBrush,oIco,oBarraBotones
LOCAL oBtnCaptura,oBtnParametros,oBtnCalculador,oBtnClient,oBtnProveed,oBtnABusca,oBtnArticulos,oBtnReindexa,oBtnSalir,oBtnCotiza,oBtnCaja,oBtnTactil,oBtnInternet
LOCAL oBmp,oFont,oFontComic,oMiCasilla,oTcCasilla,oNetCasilla
LOCAL cBrocha,cLogoInicial,aMiCia
LOCAL lValidaSys,lValidaRed
PUBLIC cCodFilial:=""
PUBLIC cNomFilial:=""
PUBLIC cAbrFilial:=""
PUBLIC TCambio,lFilCentral
PUBLIC mmUsuario,mmInicial,mmNombre,mmAcceso,mmUltimo,mmModulo,mmIngreso,mmRegPss
PUBLIC cImpNet,cImpLoc,cImpXls
hBorland := LoadLibrary( "BWCC.DLL" ) // Loading Borland's dll
SET RESOURCES TO "VT20998.dll"
SET DATE GERMAN
SET _3DLOOK ON
RESTORE FROM HEADMAIN
RESTORE FROM HEADIMPT ADDITIVE
lValidaSys := ValidaSys()
lValidaRed := ValidaRed()
aMiCia := IF(lValidaSys,QMiCia(),{ "INTEL SOFT S.C.R.Ltda.", "Av. de la Cultura 1-A","20225059559","PacificSoft" })
cMiCia := aMiCia[1]
cMiDir := aMiCia[2]
cMiRuc := aMiCia[3]
cMiCom := aMiCia[4]
cBrocha := BcaTapiz(TRIM(IMPTPZ))
cLogoInicial:= TRIM(IMPLG0)
nWindows := IIF(IsWin95(),1,2).....
DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-10 // ancho,alto
DEFINE FONT oFontComic NAME "Comic Sans Ms" SIZE 8, 15
DEFINE ICON oIco RESOURCE "ICONO"
DEFINE CURSOR oCursorMano RESOURCE "Hand"
IF nWindows=1 // Windows 95/98
IF lValidaRed
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
BRUSH oBrush ;
ICON oIco ;
MENU IIF(lValidaSys.and.lValidaRed,BuildMenu(),SalirMenu())
ELSE
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
BRUSH oBrush ;
ICON oIco ;
MENU SalirMenu()
ENDIF
ELSE
IF lValidaRed
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
ICON oIco ;
MENU IIF(lValidaSys.and.lValidaRed,BuildMenu(),SalirMenu())
oWnd:bPainted = { | hDC | PalBmpDraw( hDC, 0, 0, oBrush:hBitmap, oWnd:nWidth, oWnd:nHeight ) }
ELSE
DEFINE WINDOW oWnd MDI ;
TITLE "Sistema de Ventas" ;
ICON oIco ;
MENU SalirMenu()
oWnd:bPainted = { | hDC | PalBmpDraw( hDC, 0, 0, oBrush:hBitmap, oWnd:nWidth, oWnd:nHeight ) }
ENDIF
ENDIF
oWnd:Say( 3, 16, aMiCia[4], nRGB( 25, 40, 95 ), nRGB( 192, 192, 192 ),oFontComic )
DEFINE BUTTONBAR oBarraBotones; // Se define Barra de Botones (Objeto: BUTTONBAR).
SIZE 42,42; // Tama¤o en pixeles de los botones
3D; // Vista en efecto 3¦ dimensi¢n
TOP; // Se despliega en la parte superior de la ventana.
OF oWnd; // Se indica que pertenece
CURSOR oCursorMano // Se define tipo de cursor al posicionarse en la barra.
DEFINE BUTTON oBtnClient RESOURCE "Bmp_Clientes" OF oBarraBotones ;
TOOLTIP "Clientes";
NOBORDER ;
ACTION Click(),MovClte(oWnd,cVersion,cMiCia);
WHEN lValidaSys.and.lValidaRed ;
MESSAGE "Archivo de Clientes"
DEFINE BUTTON oBtnArticulos RESOURCE "Bmp_Articulos" OF oBarraBotones ;
TOOLTIP "Articulos";
NOBORDER ;
ACTION (Click(),MovItem(oWnd,cVersion,cMiCia));
WHEN lValidaSys.and.lValidaRed ;
MESSAGE OemToAnsi("Archivo de Articulos")
DEFINE BUTTON oBtnProveed RESOURCE "Bmp_Proveedores" OF oBarraBotones ;
TOOLTIP "Proveedores";
NOBORDER ;
ACTION (Click(),MovProv(oWnd,cVersion,cMiCia));
WHEN lValidaSys.and.lValidaRed ;
MESSAGE "Archivo de Proveedores"
SET FONT OF oWnd TO oFont
SET MESSAGE OF oWnd ;
TO "Software a Medida by Pacific(s)Soft" NOINSET CENTERED KEYBOARD TIME DATE
/*** Define tus propias casillas:... ***/
DEFINE MSGITEM oMiCasilla OF oWnd:oMsgBar;
PROMPT "Operador";
SIZE 100 COLOR "R*/BG" ;
ACTION (Click(),InfoUsuario())
DEFINE MSGITEM oNetCasilla OF oWnd:oMsgBar;
PROMPT "Ruta de Servidor";
SIZE 150 COLOR "G+/N" ;
ACTION (Click(),Dlg_Parametro(oWnd,cMiCia,cMiCom,cMiDir,cMiRuc),oNetCasilla:SetText(TRIM(IMPNET)))
DEFINE MSGITEM oTcCasilla OF oWnd:oMsgBar;
PROMPT "T. de Cambio";
SIZE 110 COLOR "GR+/N" ;
ACTION (Click(),TCambio:=Cambio(oWnd),oTcCasilla:SetText("T.C. "+TRANS(TCambio,MA43)))
ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT (SetHandleCount(80),;
IngPasse(),;
ConfigSet(),;
oNetCasilla:SetText(TRIM(IMPNET)),;
oMiCasilla:SetText(mmUsuario),;
Matrices(),;
CreaDbfNtx(.f.),;
TCambio:=Cambio(oWnd),;
oTcCasilla:SetText("T.C. "+TRANS(TCambio,MA43)),;
LogoInicio(cLogoInicial),;
oWnd:SetText(cMiCia+" - "+UPPER(TRIM(cNomFilial))),;
IIF(IMPSND,SndPlaySound( "..\Sonidos\Notify.wav" ),"") ) ;
VALID MsgYesNo( "Salir del Sistema" ,cVersion)
DIRCHANGE("\FWVENTAS\DATA")
IMPOSV:=nWindows
IMPHOY:=DATE()
IMPNTX:=.F.
* Mascaras para PICTURE
IMPMPV:=IIF(!EMPTY(IMPDPV),"999,999"+"."+REPL("9",IMPDPV),"999,999")
IMPMPC:=IIF(!EMPTY(IMPDPC),"999,999"+"."+REPL("9",IMPDPC),"999,999")
IMPMUM:=IIF(!EMPTY(IMPMUM),"999,999"+"."+REPL("9",IMPDUM),"999,999")
SAVE TO HEADIMPT ALL LIKE IMP* FIL* MA*
SET RESOURCES TO // Desactivamos los recursos definidos.
FreeLibrary( hBorland ) // We have finish with it
Return nil
Y abro todavia dos, y como veras los IMP* FIL* y mascaras para PICTURE las pongo en un MEM me ha funcionado muy bien el Clipper puro pero ahora con regular exito.
Estoy con Clipper 5.3b FW 2.4 y Blinker 7.0
y el LNK
BLINKER CLIPPER SYMBOL OFF
BLINKER EXECUTABLE COMPRESS
BLINKER EXECUTABLE CLIPPER F30
MAP A,S
PACKCODE
PACKDATA
// If you use Mr. Debug for Windows product
// search c:\mrdebug\lib\mrd4win.lib
FILE VT20999, VT20998, VT20100, VT20150, VT20199, VT20200, VT20299, VT20300, VT20400, VT20500, VT20550, VT20600, VT20700, VT20710, VT20800, VT20900, VT20340, VT20000
FILE TGET, TGRAPH, TDOSPRN, SSAY,TCBROWSE, fwcalen,F:\clip53\obj\mpar
DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
exetype Windows 3.1
code moveable discardable
data preload moveable
stacksize 10500
heapsize 8500
segment 'PLANKTON_TEXT' nondiscardable
segment 'EXTEND_TEXT' nondiscardable
segment 'OM_TEXT' nondiscardable
segment 'OSMEM_TEXT' nondiscardable
segment 'SORTOF_TEXT' nondiscardable
segment 'STACK_TEXT' nondiscardable
DEFEND
NOBELL
SEARCH Five, FiveC, Objects, SBROWSE
BTNGET, FILEXLS
LIB WinApi, Clipper, Extend, Terminal, dbfcdx, _dbfcdx, CTP53, BTNGET, FILEXLS
GRACIAS
Att.
Luis Ponce
Luis Ponce
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Luis,
> ahora con regular exito.
El problema cual es ? GPFs ?
Donde ocurren ? Has puesto trazas en tu programa usando MsgInfo() para localizar el punto exacto en donde se genera un GPF ?
Tendrás que generar un fichero MAP usando MAP A,S con Bliker y buscar la dirección del GPF dentro de él.
Mi mejor consejo es que migres a 32 bits usando FWH y Harbour/xHarbour.
> ahora con regular exito.
El problema cual es ? GPFs ?
Donde ocurren ? Has puesto trazas en tu programa usando MsgInfo() para localizar el punto exacto en donde se genera un GPF ?
Tendrás que generar un fichero MAP usando MAP A,S con Bliker y buscar la dirección del GPF dentro de él.
Mi mejor consejo es que migres a 32 bits usando FWH y Harbour/xHarbour.
El problema es que se ha vuelto inestable, debido a los problemas de GPF, en las listas de articulos muestra un grafico con el ON CHANGE del LISTBOX y si lo pasa muy rapido da error stck fault 650, uso la TIMAGE para poder mostrar JPG, el scroll del mouse no va para arriba... y no logro solucionar estos inconvenientes, debo estar haciendo algo mal.
Gracias Antonio, quisiera hacer caminar el sistema para migrar a paso firme a 32 bits, cuales serian los pasos y como cambiaria mi entorno de programacion.
Att.
Gracias Antonio, quisiera hacer caminar el sistema para migrar a paso firme a 32 bits, cuales serian los pasos y como cambiaria mi entorno de programacion.
Att.
Luis Ponce
-
- Posts: 189
- Joined: Sun Jul 08, 2007 1:46 am
- Location: Uruguay
Hola Luis:
Seguramente ese problema es que estas usando NViewlib o
algo parecido. Ese fue unos de mi problemas en 16 bits.
(Si las imagenes son JPG prueba primerpo con BMPs)
Ahoar con 32 bits, no ocurre, usas JPG o BMP sin problemas.
De todos modos trata de ubicar la FreeImage.dll, y busca
en utilidades en el foro que debe de haber algo.
Yo use esta solucion alternativa. Pero igualmente
lo unico que te salvara definitivamente es pasarte a Harbour .
Saludos
Ruben Fernandez.
Seguramente ese problema es que estas usando NViewlib o
algo parecido. Ese fue unos de mi problemas en 16 bits.
(Si las imagenes son JPG prueba primerpo con BMPs)
Ahoar con 32 bits, no ocurre, usas JPG o BMP sin problemas.
De todos modos trata de ubicar la FreeImage.dll, y busca
en utilidades en el foro que debe de haber algo.
Yo use esta solucion alternativa. Pero igualmente
lo unico que te salvara definitivamente es pasarte a Harbour .
Saludos
Ruben Fernandez.