Consulta Sobre Array " SOLUCIONADO "

Consulta Sobre Array " SOLUCIONADO "

Postby remtec » Tue Apr 07, 2020 1: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: Select all  Expand view  RUN

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


 
Last edited by remtec on Tue Apr 07, 2020 2:26 pm, edited 1 time in total.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Array

Postby cnavarro » Tue Apr 07, 2020 2: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: Select all  Expand view  RUN

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: Select all  Expand view  RUN

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: Select all  Expand view  RUN

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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Consulta Sobre Array

Postby remtec » Tue Apr 07, 2020 2: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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Array " SOLUCIONADO "

Postby Willi Quintana » Thu Apr 09, 2020 4:37 am

Sencillo...

Code: Select all  Expand view  RUN



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


..
..
..
Function  SeleAran(Tip_Ate1,aArancel)
..
..
.
Return(aArancel)


 
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Consulta Sobre Array " SOLUCIONADO "

Postby remtec » Thu Apr 09, 2020 2: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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm


Return to FiveWin para Harbour/xHarbour

Who is online

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