Comportamiento extraño

Comportamiento extraño

Postby surGom » Mon Sep 28, 2015 1:19 pm

Hola compañeros tengo el siguiente código

Code: Select all  Expand view

   LOCAL aConstancia := { "Activo", "No Inscripto", "Exento", "No Alcanzado", "Exento no alcanzado" }
   LOCAL cConiva := "No Inscripto"
   LOCAL cCongan := "No Inscripto"
   LOCAL cConmono := "No Inscripto"

 /////////

   REDEFINE COMBOBOX oCos[ 1 ] VAR cConiva id 114 ITEMS aConstancia of oFold:adialogs[ 1 ] update
   REDEFINE COMBOBOX oCos[ 2 ] VAR cCongan id 115 ITEMS aConstancia of oFold:adialogs[ 1 ] update
   REDEFINE COMBOBOX oCos[ 3 ] VAR cConmono id 119 ITEMS aConstancia of oFold:adialogs[ 1 ] update
/////////////

STATIC FUNCTION ACEPTAR()

      IF  reviso(oData)
     /////
           oData:constiva := grabcons( cConiva )
           oData:constgan := grabcons( cCongan )
           oData:constmono := grabcons( cConmono )
      //////
           salvo(oData)
 
      ENDIF
 


Code: Select all  Expand view

FUNCTION grabcons( cConstan )

   LOCAL cActivo := ""

   ? cConstan

   IF cConstan == "Activo"
      cActivo := "AC"
   ELSEIF cConstan == "No Inscripto"
      cActivo := "NI"
   ELSEIF cConstan == "Exento"
      cActivo := "EX"
   ELSEIF cConstan == "No alcanzado"
      cActivo := "NA"
   ELSEIF cConstan == "Exento no alcanzado"
      cActivo := "AN"
   ENDIF

RETURN cActivo
 


Este mismo código compilado con harbour da distintos resultados que con xharbour, a saber hice un msginfo en dónde transformo las variables al dato que necesito
Supongamos que en el combo elijo "Activo"

En xHarbour

El msginfo dice "Activo"

pero el compilado con harbour

El msginfo dice "Activocripto"

No reemplaza la variable sino que la sobreescribe.
Lo que hice fue poner todas las opciones con la misma cantidad de caracteres, y funciona.

Pero porque el comportamiento.

Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: Comportamiento extraño

Postby Antonio Linares » Tue Sep 29, 2015 12:11 am

Luis,

Puedes comprobar si en el ejemplo samples\combos.prg te ocurre igual ? gracias
regards, saludos

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

Re: Comportamiento extraño

Postby surGom » Tue Sep 29, 2015 12:16 pm

No Antonio en el ejemplo funciona bien.


Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: Comportamiento extraño

Postby Antonio Linares » Tue Sep 29, 2015 2:17 pm

Luis,

Podrias proporcionar un pequeño ejemplo autocontenido que reproduzca el problema ? gracias
regards, saludos

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

Re: Comportamiento extraño

Postby surGom » Tue Sep 29, 2015 4:59 pm

Antonio hice este ejemplo lo compile en el mismo programa ....Y ACA FUNCIONA BIEN

Code: Select all  Expand view

# include "Fivewin.ch"
 function prueba()
 
 LOCAL aConstancia := { "Activo", "No Inscripto", "Exento", "No Alcanzado", "Exento no alcanzado" }
 LOCAL cConmono  := "No Inscripto"
 LOCAL oDlg
 local oBtn
 
 
DEFINE DIALOG oDlg FROM 1, 1 TO 20, 60
 

@ 2, 2 COMBOBOX cConmono ITEMS aConstancia SIZE 200, 100

@ 4, 2 button oBtn  prompt "prueba" ACTION grabcons( cConmono ) SIZE 50, 30

@ 4, 20 button oBtn   prompt "Salir" ACTION oDlg:end() SIZE 50, 30

 
                   
ACTIVATE DIALOG oDlg CENTER

return nil

/////////////////////////////////////////////////////////////////////////////////////////
static FUNCTION grabcons( cConstan )

   LOCAL cActivo := ""

   ? cConstan

   IF cConstan == "Activo"
      cActivo := "AC"

   ELSEIF cConstan == "No Inscripto"
      cActivo := "NI"
   ELSEIF cConstan == "Exento"
      cActivo := "EX"
   ELSEIF cConstan == "No alcanzado"
      cActivo := "NA"
   ELSEIF cConstan == "Exento no alcanzado"
      cActivo := "AN"
   ENDIF

RETURN cActivo
 


Aquí funciona bien.

Realmente no se porque en los demas programas no trabaja correctamente, ya que todos los prg que son compilados con harbour y xharbour son los mismos, pero en uno funciona y en harbour da esa incongruencia.


Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: Comportamiento extraño

Postby surGom » Tue Sep 29, 2015 10:24 pm

Seguí haciendo pruebas
Código original

Code: Select all  Expand view

REDEFINE COMBOBOX oCos[ 1 ] VAR cConiva id 114 ITEMS aConstancia of oFold:adialogs[ 1 ] update
 


En este es caso cuando da la incongruencia entre los dos compiladores

Ahora si hago

Code: Select all  Expand view

   REDEFINE COMBOBOX oCos[ 1 ] VAR cConiva id 114 ITEMS aConstancia of oFold:adialogs[ 1 ] update  ON CHANGE grabcons(cConiva)
 


Recuerdo la función
Code: Select all  Expand view

FUNCTION grabcons( cConstan )

   LOCAL cActivo := ""

   ? AllTrim(cConstan)

   IF cConstan = "Activo"
      cActivo := "AC"
   ELSEIF cConstan = "No Inscripto"
      cActivo := "NI"
   ELSEIF cConstan = "Exento"
      cActivo := "EX"
   ELSEIF cConstan = "No alcanzado"
      cActivo := "NA"
   ELSEIF cConstan = "Exento no alcanzado"
      cActivo := "AN"
   ENDIF

RETURN cActivo
 


De esta forma funciona correctamente!!!!
Porqué ???? Si lo único que hago es mostrar la variable (y la muestra correctamente) ???
Ademas cConstan se vé solamente en la función grabcons

Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: Comportamiento extraño

Postby surGom » Tue Sep 29, 2015 11:18 pm

Ahora probé de esta forma
Cuando modifico cargo los datos de la base de datos

Antes
Code: Select all  Expand view

   LOCAL cConiva := ""
   LOCAL cCongan := ""
   LOCAL cConmono := ""
////////////////////////////////////////////////////

    if !lnuevo
      cConiva := vercond( oData:constiva )
      cCongan := vercond( oData:constgan )
      cConmono := vercond( oData:constmono )
 


Ahora
Code: Select all  Expand view

   LOCAL cConiva := ""
   LOCAL cCongan := ""
   LOCAL cConmono := ""
   LOCAL cVariva := ""
   LOCAL cVarGan := ""
   LOCAL cVarmono := ""
//////////
    if !lnuevo
      cVariva := cConiva := vercond( oData:constiva )
      cVarGan := cCongan := vercond( oData:constgan )
      cVarmono := cConmono := vercond( oData:constmono )

 

la Función VERCOND

Code: Select all  Expand view

///////////
FUNCTION vercond( cVar )

   LOCAL cCondicion

   IF cVar = "AC" .OR. cVar = "S"
      cCondicion := "Activo"
   ELSEIF cVar = "NI" .OR. cVar = "N" .OR. Empty( cVar )
      cCondicion := "No Inscripto"
   ELSEIF cVar = "EX"
      cCondicion := "Exento"
   ELSEIF cVar = "NA"
      cCondicion = "No alcanzado"
   ELSEIF cVar = "XN"
      cCondicion = "Exento no alcanzado"
   ELSEIF cVar = "AN"
      cCondicion = "Activo no alcanzado"
   ENDIF

RETURN cCondicion
 


Antes

Code: Select all  Expand view

   REDEFINE COMBOBOX oCos[ 1 ] VAR cConiva id 114 ITEMS aConstancia of oFold:adialogs[ 1 ] update  
   REDEFINE COMBOBOX oCos[ 2 ] VAR cCongan id 115 ITEMS aConstancia of oFold:adialogs[ 1 ] update
   REDEFINE COMBOBOX oCos[ 3 ] VAR cConmono id 119 ITEMS aConstancia of oFold:adialogs[ 1 ] update
 


Ahora
Code: Select all  Expand view

   REDEFINE COMBOBOX oCos[ 1 ] VAR cConiva id 114 ITEMS aConstancia of oFold:adialogs[ 1 ] update on change( cVariva :=  cConiva)
   REDEFINE COMBOBOX oCos[ 2 ] VAR cCongan id 115 ITEMS aConstancia of oFold:adialogs[ 1 ] update on change(cVarGan := cCongan )
   REDEFINE COMBOBOX oCos[ 3 ] VAR cConmono id 119 ITEMS aConstancia of oFold:adialogs[ 1 ] update on change(cVarmono :=  cConmono )
 



Antes
NO FUNCIONABA

Ahora
FUNCIONA

Alguna idea del porque???

Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: Comportamiento extraño

Postby Antonio Linares » Wed Sep 30, 2015 7:57 am

Luis,

Es dificil de saber la razón salvo que pudieses proporcionar un ejemplo autocontenido para probrarlo
regards, saludos

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

Re: Comportamiento extraño

Postby surGom » Thu Oct 01, 2015 11:01 pm

Antonio en el ejemplo que te quiero enviar funciona perfectamente, indudablemente es algo del programa que interfiere, pero todavía no he podido encontrarlo, en dónde falla es un prg de alta baja de clientes y en el de proveedores que son muy similares.


Luis
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 39 guests