FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour BEgin Sequence
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
BEgin Sequence
Posted: Thu Dec 11, 2008 01:05 PM
Buen día,

Tengo un problema y no se si hago algo mal o es que en xHarbour no funciona el BEGIN SEQUENCE.

Guardo un array multidimensional en un campo memo y, como a veces los memos son de fallar, necesito detectar un error al leer el array desde el memo (cuando el memo contenga cualquier cosa) para así reemplazar el array que debiera estar en el campo memo con un array "base" y la aplicación no se detenga.

Para esto implementé un BEGIN SEQUENCE pero no funciona.

   begin sequence

	aPartes	:=	aRead( (cTrabajos)->APARTES )

	recover
	aPartes := {{ 00 , space(25) , space(15) , .f. , space(12) , ;
	           "   " , 1 , 0000.00  , 99999 , space(25) }}
	msginfo("pasé por el recover")
	end

           ...... sigue el programa


¿Como puedo manejar el error para que no se detenga la aplicación?.

Gracias.

Rolando :-)
Posts: 248
Joined: Wed Jan 11, 2006 11:30 AM
BEgin Sequence
Posted: Thu Dec 11, 2008 02:06 PM

Hola amigo, use :

try
x := 10/0
catch
? "deu erro"
end

Saluds, Ale

aleseribeli@hotmail.com

FwH, Hb Svn, ADS 8.1, ADS 10, Pelles C, FwPPC, MsVc 2008, MsVc 2010
"Conhecimento, você não subtrai quando divide; mas soma e multiplica."
**---Mário Persona---**
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
BEgin Sequence
Posted: Thu Dec 11, 2008 02:25 PM

Ale,

Gracias por responder, pero lo que sugieres no funciona, me da error al compilar: Error E0030 Syntax error: "parse error at 'CATCH'"

Aclaro que uso FWH2.7 + xHarbour

Agradezco cualquier ayuda.

Rolando

Posts: 593
Joined: Sat May 12, 2007 11:47 AM
BEgin Sequence
Posted: Thu Dec 11, 2008 02:49 PM
Logré compilar con el CATCH (faltaba el objeto).

Pero sigo teniendo el mismo problema, no detecta el error al querer leer un array guardado en un campo memo cuando este campo memo no contiene un array (contiene cualquier cosa).

puse:
  try

  aPartes	:=	aRead( (cTrabajos)->APARTES )

	catch oError

			aPartes := {{ 00 , space(25) , space(15) , .f. , space(12) , ;
	           "   " , 1 , 0000.00  , 99999 , space(25) }}
			msginfo("pasé por el catch")
	end


Pero sigue deteniendose la aplicación mostrando el error:



Application
===========
Path and name: D:\VERCE\BIN\xHsounds.Exe (32 bits)
Size: 650,240 bytes
Time from start: 0 hours 0 mins 18 secs
Error occurred at: 11/12/2008, 12:45:55
Error description: Error BASE/1068 Error de argumento: acceso al array
Args:
[ 1] = U
[ 2] = N 3

Stack Calls
===========
Called from: editorepa.prg => EDITOTRABAJOS(266)
Called from: buscoreparaciones.prg => (b)MUESTROARRAY(2582)
Called from: WINDOW.PRG => TCONTROL:LDBLCLICK(1771)
Called from: WBROWSE.PRG => TWBROWSE:LDBLCLICK(1605)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: CONTROL.PRG => TWBROWSE:HANDLEEVENT(1357)
Called from: WINDOW.PRG => _FWH(3201)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TWINDOW:ACTIVATE(901)
Called from: fwsounds.prg => PRIMERA(482)



¿Cómo puedo hacer para detectar que el campo memo no contiene un array?

Gracias.

Rolando :-)
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
BEgin Sequence
Posted: Thu Dec 11, 2008 06:01 PM

Hola,

Muy contento porque ya lo solucioné por mis medios.

Retoqué un poco la clase TWindow agregandole una opción para que cuando lo que lea con aRead() no sea un array, lo reemplace por un array que le envío como data.

Saludos.

Rolando :D

Continue the discussion