Hola Amigos, soy nuevo en Fivewin, y tengo un problema super grande, como nuestro querido Clipper, necesita un ambiente windows, es logico llegar aqui, tengo five win ver 2.4 y blinker 5.1, he tenido que hacer un programa chico pero muy importante, el cual tiene como funcion mostrar por pantalla e imprimir informes de examenes medicos.
Yo puedo mostrar la informacion por pantalla con un browse, puedo imprimir con una impresora okidata 320 o una CANNON BJ 200 o 250 de tinta, me previsualiza en pantalla y luego imprimo, mi sorpresa y problema es que al tratar de imprimir en una HP 692, 690 o cualquier impresora de la linea EPSON C43, C80 u otras, el sistema se cae arrojando el error que te describo mas abajo, pero con las impresoras antes mensionadas, imprime sin ningun problema.
Estoy tan complicado porque no logro dar con la solucion, se que es un problema de memoria, lo he probado en diferentes PC P. IV 1,6 GH, 128 RAM intel, otro PC 2,4 GH, 256 RAM y otros con win 98 o WX, y siempre tengo el mismo resultado. Necesito que por favor me orientes, te envio el programa y el error.
Enormemente agradecido, se despide,
Miguel Rivera.
****** ERROR ***
FIVEWIN provocó un error de protección general
en el módulo MENU3.EXE de 000a:000003f9.
Registros:
EAX=000000a7 CS=43b7 EIP=000003f9 EFLGS=00000216
EBX=0147029c CS=563f ESP=0000635a EBP=00006362
ECX=00000000 DS=563f ESI=00024493 FS=0000
EDX=00003b4f ES=4337 EDI=00024337 GS=0000
Bytes en CS:EIP
,02x,02x,02x,02x,02x,02x,02x,02x,02x,02x,02x,02x,02x,02x,02x
Volcado de pila:
,08x,08x,08x,08x,08x,08x,08x,08x,08x,08x,08x,08x,08x,08x,08x
****** LNK
BLINKER executable compress
blinker INCREMENTAL OFF
BLINKER CLIPPER SYMBOL OFF
BLINKER SEGMENT THRESHOLD 65500
STACK 7068
BLINKER PROCEDURE DEPTH 70
MAP A,S
DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
exetype Windows 3.1
code preload moveable discardable
data preload moveable
stacksize 10000
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
beginarea
File Menu3
File TcBrowse
File TcColumn
File Rayos
endarea
Lib c:\fw24\lib\five
Lib c:\fw24\lib\fivec
Lib c:\fw24\lib\objects
Lib c:\fw24\lib\winapi
Lib c:\lib\dbfCDX
***** RMK
compile = c:\clipper5\bin\clipper $< /i /n /d
link = c:\bl51\bin\blinker;C:\util\obj
.Prg.Obj:
$(compile)
Menu3.Obj : Menu3.Prg
TcBrowse.Obj : TcBrowse.Prg
TcColumn.Obj : TcColumn.Prg
Rayos.obj : Rayos.Prg
Ecos.obj : Ecos.prg
Scanner.obj : Scanner.prg
menu3.Exe : menu3.Obj TcBrowse.obj TcColumn.obj Rayos.obj\
Scanner.obj Ecos.obj
\bl51\bin\Blinker @compi1.Lnk
***** PROGRAMA PRG
#include "FiveWin.ch"
#Include "TcBrowse.ch"
#include "report.ch"
#Include "Font.Ch"
FUNCTION Scanner()
Local Dialog,oDlg,oNom,oFec
Local odbginfsc,odbdinfsc
bBusca=1
oFolio:=0
cFolio:=0
sele 1
Use Geinfsc Shared
DATABASE oDbGinfsc
Set inde to Geinfsc
sele 2
Use Deinfsc Shared
DATABASE oDbDinfsc
Set inde to Deinfsc
if !file("pasosca.dbf")
Copy struc to pasosca
endif
sele 3
Use Detarayo Shared
Set inde to Detarayo
Sele 4
Use Profesio Shared
Set inde to Profesio
Sele 5
Use pasosca Exclusi
Define Dialog oDlg ResName "Pide_nro_bono" Title "Datos del Paciente"
Redefine Get oFolio Var cFolio Id 102 Of oDlg Color "w+/b*" Update Picture "@9999999999"
Redefine Button Id 201 Of oDlg ;
Action (bBusca:=1,Muestra_datos(),lGrabar:=.f.,cFolio:=0)
Redefine Button Id 101 Of oDlg ;
Action (bBusca:=0,Busca_fol(),lGrabar:=.f.)
Redefine Button Id 150 Of oDlg ;
Action (Dbcloseall(),oDlg:END())
Activate Dialog oDlg Centered
RETURN nil
Static FUNCTION Muestra_datos()
Local oDlg,Dialog,oCod,cCod
if bBusca=1
Sele a
DbSetorder(1)
seek cFolio
lSalida := .T.
lGrabar:=.t.
if eof()
MsgInfo("Nº de Ingreso no Existe")
lSalida := .F.
lGrabar:=.f.
Return
Endif
else
cFolio=a->Nro_bon
Endif
sele c
seek cFolio
cCod=""
Do while (Fol_ray=cFolio).and.!eof()
cCod=cCod+cod_ara+" "
Dbskip()
Enddo
Sele a
Define Dialog oDlg ResName "Pide_paci" Title "Datos del Paciente"
Redefine Say oFolio Prompt a->nro_bon Id 102 Of oDlg Color "w+/b*"
REDEFINE Say oNom Prompt OemToAnsi(a->nom_pac) ID 103 OF oDlg Color "w+/b*"
REDEFINE Say oFec Prompt a->fec_inf ID 104 OF oDlg Color "w+/b*"
REDEFINE Say oCod Prompt cCod ID 105 OF oDlg Color "w+/b*"
Redefine Button Id 210 Of oDlg ;
Action Imprime()
Redefine Button Id 190 Of oDlg ;
Action Muestra_inf()
Redefine Button Id 150 Of oDlg ;
Action (oDlg:END())
Activate Dialog oDlg Centered
cFolio:=0
oFolio:=0
Return
Static Function Imprim()
LOCAL oFont,oFont1,oFont2
Private oReport
Sele d
DbSeek(a->med_rad)
Sele b
Set inde to Deinfsc
DbSeek(cFolio)
if eof()
MsgInfo("No Existe Registro "+str(cFolio,10)+" de Ingreso no Existe")
Return
endif
//-17
DEFINE FONT oFont NAME "Courier New" SIZE 0,-15
REPORT oReport Title " "," "," ",spac(32)+" Santiago "+spac(8)+subs(a->fec_inf,1,2)+spac(11)+aMeses[val(subs(a->fec_inf,4,2))]+space(7)+subs(a->fec_inf,7,4)," ",;
"Sr(a)DR(a) : "+OemToAnsi(trim(a->med_sol))," "," ","Presente ",OemToAnsi(trim(a->tip_exa))," "," ",OemToAnsi(trim(a->nom_pac))," "," "," "," "," ";
FONT oFont;
PREVIEW
COLUMN DATA spac(6)+OemToAnsi(b->Cod_det) SIZE 71
END REPORT
oReport:nTitleUpLine := RPT_NOLINE
oReport:nTitleDnLine := RPT_NOLINE
oReport:Margin(.15,RPT_LEFT,RPT_INCHES)
oReport:Margin(.25,RPT_TOP,RPT_INCHES)
oReport:Margin(.25,RPT_BOTTOM,RPT_INCHES)
ACTIVATE Report oReport While b->Nro_bon=cFolio.and.!eof() ON END Finsc(oReport)
oFont:End()
Sele b
Seek cFolio
Return
Static FUNCTION Busca_fol()
local oDlgPa
local oLbx1,oFont
cFolio:=0
oFolio:=0
Sele a
go bott
aa=nro_bon-10
Dbseek(aa)
Define Dialog oDlgPa ResName "Listado_paci" Title "Paciente Ingresados"
Redefine Browse oLbx1 Grid Id 110 Of oDlgPa;
On DblClick (bBusca:=0,Muestra_datos(),oLbx1:Refresh(), oLbx1:SetFocus())
oLbx1:oFont := TFont():New( "MS Sans Serif", 0, -14,, .T. )
oLbx1:nFreeze := 3
oLbx1:nClrBackFocus := RGB(48,207,100)
oLbx1:bKeyChar := {| nKey, nFlags | iIf(nKey == 13,Muestra_datos(),)}
Add Column To Browse oLbx1 Data a->Nro_bon ;
Head "Nro. Bono" Width 70
Add Column To Browse oLbx1 Data OemToAnsi(a->Nom_pac) ;
Head "Nombre del Paciente" Width 350
Add Column To Browse oLbx1 Data a->Fec_inf ;
Head "Fecha de Informe" Width 450
Define Column oCol Head "" Size 1
oLbx1:AddColumn(oCol)
oLbx1:SetFocus()
Redefine Button Id 150 Of oDlgpa ;
Action (oDlgpa:END())
Activate Dialog oDlgPa Centered
Sele a
DbSetorder(1)
Return
Static FUNCTION Muestra_Inf()
local oDlgDeta
local oLbx1,oFont
Local Deta_inf[200]
cFolio:=a->Nro_bon
oFolio:=0
Sele b
set inde to deinfsc
Dbseek(a->nro_bon)
Do while (nro_bon=a->nro_bon).and.!eof()
sele e
Appen Blank
Repl nro_lin with b->nro_lin,cod_det with b->cod_det
Dbcommit()
Dbunlock()
sele b
Dbskip()
Enddo
Sele e
Dbgotop()
Define Dialog oDlgDeta ResName "Detalle_info"
REDEFINE Say oNom Prompt OemToAnsi(a->nom_pac) ID 103 OF oDlgDeta Color "w+/b*"
Redefine Browse oLbx1 Grid Id 106 Of oDlgDeta;
On DblClick (oLbx1:Refresh(), oLbx1:SetFocus())
oLbx1:oFont := TFont():New( "MS Sans Serif", 0, -15,,.T. )
oLbx1:nFreeze := 1
oLbx1:nClrBackFocus := RGB(48,207,100)
oLbx1:bKeyChar := {| nKey, nFlags | iIf(nKey == 13,Imprime(),)}
Add Column To Browse oLbx1 Data OemToAnsi(e->Cod_Det);
Head "" Width 580 Tag OemToAnsi("e->Cod_Det")
Define Column oCol Head "" Size 1
oLbx1:AddColumn(oCol)
oLbx1:SetFocus()
Redefine Button Id 210 Of oDlgDeta ;
Action (Imprime(),oDlgDeta:END())
Redefine Button Id 150 Of oDlgDeta ;
Action (oDlgDeta:END())
Activate Dialog oDlgDeta Centered
Sele e
Return
Static Function Imprime()
Local oPrint, oFont1, oFont2, cTipo, oFont3, oFont4, oPen, oFont5
Local nFila, nColumna, nVertical, nHorizontal
Print oPrint From User Preview
Define Font oFont1 Name "Arial" Size 0,14 Of oPrint
Define Font oFont2 Name "Arial" Size 0,18 Of oPrint
Define Font oFont5 Name "Arial" Size 0,16 Of oPrint
Define Font oFont3 Name "Arial" Size 0,12 Of oPrint Bold UnderLine
Define Font oFont4 Name "Arial" Size 0,24 Of oPrint Bold Italic
Define Pen oPen Style 0 width 5
nVertical := oPrint:nVertRes()
nHorizontal := oPrint:nHorzRes()
nFila := Round(nVertical/60,0)
nColumna := Round(nHorizontal/80,0)
Fil=nFila
col=nColumna
Page
oPrint:Say(nFila*5,nColumna*40," Santiago "+spac(8)+subs(a->fec_inf,1,2)+spac(11)+aMeses[val(subs(a->fec_inf,4,2))]+space(7);
+subs(a->fec_inf,7,4),oFont1)
oPrint:Say(nFila*7,nColumna*20,"Sr(a)DR(a) : "+OemToAnsi(trim(a->med_sol)),oFont2)
oPrint:Say(nFila*9,nColumna*20,"Presente ",oFont2)
oPrint:Say(nFila*11,nColumna*20,OemToAnsi(trim(a->tip_exa)),oFont2)
oPrint:Say(nFila*13,nColumna*20,OemToAnsi(trim(a->nom_pac)),oFont2)
nAvance := 15.9
Sele b
Set inde to Deinfsc
DbSeek(cFolio)
nPosicion=15.5
nLinea=0
Do While (nro_bon=cFolio).and.!Eof()
nLinea=nLinea+1
nPosicion := nPosicion+1.4
oPrint:Say(nFila*nPosicion,nColumna*10,OemToAnsi(b->cod_det),oFont5)
DbSkip()
if nLinea>29
nFila:=fil
nPosicion:=5
nColumna:=col
nLinea:=0
Endpage
Page
endif
EndDo
nPosocion := 35.7
EndPage
EndPrint
oFont1:End()
oFont2:End()
oFont3:End()
oFont4:End()
oFont5:End()
Return(Nil)