FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consulta Sobre Array " SOLUCIONADO "
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Consulta Sobre Array " SOLUCIONADO "
Posted: Tue Apr 07, 2020 01:22 AM
Hola Amigos.

Ha pasado un buen tiempo que no he molestado, pero estoy un poco mareado y no doy con la solucion.

Tengo un Array que envio a llenar a una funcion, he comprobado que este array es cargado con los datos que necesito, pero al volver desde donde lo envio, el array no contiene elementos.

Porque no devuelve el Array con los Elementos Seleccionados?

Muchos Saludos
Antonio.

Dejo el Codigo:
Code (fw): Select all Collapse
Function AgreObser(Tip_Ate1,nExam,aExamenes,oBrw1)
    Local oDlg4,cMemo1,otitu3,oVol,oFon7,oFon8,oFon6,otitu4,oFon1,oGet5,oGet6, nCodi,Cod_Exa1
       
    Private aArancel  := {}    // <===== Aqui declaro el Array

    cMemo1 := "" // Variable vacia para tratarlo como memo

    SeleAran(Tip_Ate1,aArancel)       // <==== Aqui envio a cargar el Array

    ?" Len 1 ",Len(aArancel)       // <== Aqui no contiene los registros que cargo en la otra Function.

     ** Habilitar para Mostrar Columnas Ordenadas
     cNom9 := ASort(aArancel,,,{|x,y| x[1]<y[1]})   // "       "        "  nombre
    nCodi:=1

       .......
       .......
       Return

Function SeleAran(Tip_Ate1,aArancel)
            aArancel := {}     // <== Limpio el Array

            Sele Aran
            Seek Tip_Ate1
            If Eof()
                  MsgStop( "No Se Encontro Arancel Para Tipo Examen "+Tip_Ate1)
                  Return .f.
            Endif
            Do While (Tip_Ate=Tip_Ate1).and.!Eof()
                    Aadd(aArancel, { Aran->Nom_Ara,Aran->Cod_Ara})    // <== Aqui Agrego Elementos
                    DbSkip()
            EndDo

            ?"Len Ori ",Len(aArancel)      // <==== Aqui el array me indica que contiene 400 Elementos

             Return
FWH 22.10 - HARBOUR - PELLES C
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Consulta Sobre Array
Posted: Tue Apr 07, 2020 02:08 AM
remtec wrote:Hola Amigos.

Ha pasado un buen tiempo que no he molestado, pero estoy un poco mareado y no doy con la solucion.

Tengo un Array que envio a llenar a una funcion, he comprobado que este array es cargado con los datos que necesito, pero al volver desde donde lo envio, el array no contiene elementos.

Porque no devuelve el Array con los Elementos Seleccionados?

Muchos Saludos
Antonio.

Dejo el Codigo:
Code (fw): Select all Collapse
Function AgreObser(Tip_Ate1,nExam,aExamenes,oBrw1)
    Local oDlg4,cMemo1,otitu3,oVol,oFon7,oFon8,oFon6,otitu4,oFon1,oGet5,oGet6, nCodi,Cod_Exa1
       
    Private aArancel  := {}    // <===== Aqui declaro el Array

    cMemo1 := "" // Variable vacia para tratarlo como memo

    SeleAran(Tip_Ate1,aArancel)       // <==== Aqui envio a cargar el Array

    ?" Len 1 ",Len(aArancel)       // <== Aqui no contiene los registros que cargo en la otra Function.

     ** Habilitar para Mostrar Columnas Ordenadas
     cNom9 := ASort(aArancel,,,{|x,y| x[1]<y[1]})   // "       "        "  nombre
    nCodi:=1

       .......
       .......
       Return

Function SeleAran(Tip_Ate1,aArancel)
            aArancel := {}     // <== Limpio el Array

            Sele Aran
            Seek Tip_Ate1
            If Eof()
                  MsgStop( "No Se Encontro Arancel Para Tipo Examen "+Tip_Ate1)
                  Return .f.
            Endif
            Do While (Tip_Ate=Tip_Ate1).and.!Eof()
                    Aadd(aArancel, { Aran->Nom_Ara,Aran->Cod_Ara})    // <== Aqui Agrego Elementos
                    DbSkip()
            EndDo

            ?"Len Ori ",Len(aArancel)      // <==== Aqui el array me indica que contiene 400 Elementos

             Return


Bien, el problema es de concepto en la declaración de las variables.
Para no extenderme demasiado te digo como debes hacerlo
En la function
Code (fw): Select all Collapse
Function AgreObser(Tip_Ate1,nExam,aExamenes,oBrw1)
    Local oDlg4,cMemo1,otitu3,oVol,oFon7,oFon8,oFon6,otitu4,oFon1,oGet5,oGet6, nCodi,Cod_Exa1
       
    LOCAL aArancel  := {}    // <===== Aqui declaro el Array

    cMemo1 := "" // Variable vacia para tratarlo como memo

    aArancel :=  SeleAran(Tip_Ate1 )       // <==== Aqui envio a cargar el Array

... / ...


Y en la function
Code (fw): Select all Collapse
Function SeleAran( Tip_Ate1 )
    LOCAL            aArancel := {}     // 

.../...

Return aArancel


Pero lo que no entiendo es, si vas a "limpiar", o crear un nuevo array en la segunda function que es el que vas a devolver, por qué lo pasas como parámetro?
Otro tema sería que definieras la variable con un ámbito mayor al de una function, que me imagino que es el motivo de definirla PRIVATE ( o STATIC como suelo usar yo ), pero tampoco tienes que pasarla como parámetro ya que de por sí en su definición le estás diciendo que se vea en todo el PRG.
Espero haberme explicado
Pero para lo que quieres si lo haces con variables locales, debe de funcionarte correctamente.
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
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Consulta Sobre Array
Posted: Tue Apr 07, 2020 02:25 PM

Maestro muy buen dia.

Como siempre, atento a ayudarme. Funciono perfecto.

Defini el Array como Static y como tu recomiendas, no paso el array, solo lo cargo de acuerdo a la seleccion requerida.

En relacion a la observacion del boton limpiar, me han pedido que lo ponga y es solo para limpiar el campo memo.

Mil gracias y muchos saludos.

Antonio.

FWH 22.10 - HARBOUR - PELLES C
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Consulta Sobre Array &quot; SOLUCIONADO &quot;
Posted: Thu Apr 09, 2020 04:37 AM
Sencillo...

Code (fw): Select all Collapse
aArancel := {}
aArancel :=  SeleAran(Tip_Ate1,aArancel)       // <==== Aqui envio a cargar el Array

…
..
..
..
Function  SeleAran(Tip_Ate1,aArancel)
..
..
.
Return(aArancel)
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Consulta Sobre Array &quot; SOLUCIONADO &quot;
Posted: Thu Apr 09, 2020 02:54 PM

Hola Willi.

Muchas gracias por responder y por tu tiempo, lo hice con variables Static.

Muchos Saludos

Antonio

FWH 22.10 - HARBOUR - PELLES C

Continue the discussion