コード例 #1
0
    def iniciaBaseDados(self, f_szExe):

        #/ nome do metodo (logger)
        #/ ----------------------------------------------------------------------------------------
        l_szMetodo = "modelConsole::iniciaBaseDados"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        l_log = logging.getLogger(l_szMetodo)
        l_log.setLevel(logging.INFO)
        l_log.debug(">> ")

        #** ---------------------------------------------------------------------------------------
        #*  verifica parametros de entrada
        #*/
        assert ((f_szExe) and ("" != f_szExe))

        #** ---------------------------------------------------------------------------------------
        #*  carrega o arquivo de exercício
        #*/
        self._oExe = clsExe.clsExe(f_szExe)
        assert (self._oExe)

        #** ---------------------------------------------------------------------------------------
        #*  obtem o indicativo do aeródromo
        #*/
        l_szInd = self._oExe.getIndicativo().upper()
        l_log.info("Indicativo: " + l_szInd)

        #** ---------------------------------------------------------------------------------------
        #*  monta o nome do arquivo de aeródromo
        #*/
        l_szAer = data.filepath(os.path.join(locDefs.xDIR_AER, l_szInd))
        l_log.info(u"Arquivo de aeródromo: " + l_szAer)

        #** ---------------------------------------------------------------------------------------
        #*  carrega o arquivo de aeródromo
        #*/
        self._oAer = clsAer.clsAer(l_szAer)
        assert (self._oAer)

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        l_log.debug("<< ")

        #** ---------------------------------------------------------------------------------------
        #*/
        return (True)
コード例 #2
0
    def nextPage(self):

        #/ nome do metodo (logger)
        #/ ----------------------------------------------------------------------------------------
        l_szMetodo = "wpgStart::nextPage"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  selecionou abrir exercício ?
        #*/
        if (self._rbtOpen.isChecked()):

            #** -----------------------------------------------------------------------------------
            #*  próxima página, escolher o exercício na tabela
            #*/
            l_pgNext = self._oWizard._pagTabExe

        #** ---------------------------------------------------------------------------------------
        #*  senão, selecionou criar exercício
        #*/
        else:

            #** -----------------------------------------------------------------------------------
            #*  cria um exercício
            #*/
            locData.g_oExe = clsExe.clsExe()
            #assert ( locData.g_oExe )

            #** -----------------------------------------------------------------------------------
            #*  próxima página, escolher o sítio PAR
            #*/
            l_pgNext = self._oWizard._pagTabPAR

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log.debug ( "<< " )

        #** ---------------------------------------------------------------------------------------
        #*/
        return (l_pgNext)
コード例 #3
0
ファイル: wndTabelaPAR.py プロジェクト: mlabru/sipar
    def selectPAR(self):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "wndTabelaPAR::selectPAR"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica condições de execução
        #*/
        ##assert ( locData.g_oExe )

        #** ---------------------------------------------------------------------------------------
        #*  obtém o sítio PAR selecionado
        #*/
        l_oPAR = self.getCurrentLine()

        if (l_oPAR is not None):

            #** ---------------------------------------------------------------------------------------
            #*  o exercício não existe ?
            #*/
            if (None == locData.g_oExe):

                #** -----------------------------------------------------------------------------------
                #*  cria um exercício
                #*/
                locData.g_oExe = clsExe.clsExe()
                #assert ( locData.g_oExe )

            #** -----------------------------------------------------------------------------------
            #*  salva o sítio PAR selecionada
            #*/
            locData.g_oExe._oPAR = l_oPAR
コード例 #4
0
ファイル: modelPiloto.py プロジェクト: mlabru/sipar
    def loadConfigExe(self, f_szCfg):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "modelPiloto::loadConfigExe"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica condições de execução
        #*/
        #assert ( f_szCfg )
        #l_log.info ( u"Configuração de exercício a carregar: " + f_szCfg )

        #** ---------------------------------------------------------------------------------------
        #*  abre o arquivo de configuração
        #*/
        l_fdCfg = open(f_szCfg, "r")
        #assert ( l_fdCfg )

        #** ---------------------------------------------------------------------------------------
        #*  cria a área de dados
        #*/
        l_data = []

        #** ---------------------------------------------------------------------------------------
        #*  percorre todas as linhas do arquivo de configuração
        #*/
        for l_line in l_fdCfg.readlines():

            #** -----------------------------------------------------------------------------------
            #*  checa se é uma linha de comentário ou vazia
            #*/
            if ((not l_line.startswith("#"))
                    and (not l_line.startswith("\n"))):

                #** -------------------------------------------------------------------------------
                #*  checa end-of-line
                #*/
                if (l_line.endswith("\n") or l_line.endswith("\x1a")):

                    #** ---------------------------------------------------------------------------
                    #*  aceita o valor sem o end-of-line
                    #*/
                    l_data.extend(l_line[:-1].split())

                #** -------------------------------------------------------------------------------
                #*/
                else:

                    #** ---------------------------------------------------------------------------
                    #*  aceita o valor
                    #*/
                    l_data.extend(l_line.split())

        #** ---------------------------------------------------------------------------------------
        #*  fecha o arquivo
        #*/
        l_fdCfg.close()

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte do exercício
        #*/
        self._oExe = clsExe.clsExe(l_data[0:10])
        #assert ( self._oExe )

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte do PAR
        #*/
        l_oPAR = clsPAR.clsPAR(l_data[10:21])
        #assert ( l_oPAR )

        #** ---------------------------------------------------------------------------------------
        #*  salva o PAR no exercício
        #*/
        self._oExe.setPAR(l_oPAR)

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte da aeronave
        #*/
        l_oAnv = clsAnv.clsAnv(l_data[21:28])
        #assert ( l_oAnv )

        #** ---------------------------------------------------------------------------------------
        #*  salva a aeronave no exercício
        #*/
        self._oExe.setAnv(l_oAnv)

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte de comunicação
        #*/
        self._iCanal = int(l_data[28])
コード例 #5
0
ファイル: modelControle.py プロジェクト: mlabru/sipar
    def iniciaBaseDados(self, f_lstData):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "modelControle::iniciaBaseDados"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica parâmetros de entrada
        #*/
        #assert ( f_lstData )

        #** ---------------------------------------------------------------------------------------
        #*  cria o exercício
        #*/
        self._oExe = clsExe.clsExe()
        #assert ( self._oExe )

        #l_log.info ( "f_lstData: " + str ( f_lstData ))

        #** ---------------------------------------------------------------------------------------
        #*  salva a chave do exercício
        #*/
        self._oExe.setKey(f_lstData[0])
        #l_log.info ( "Exe.setKey: " + str ( f_lstData [ 0 ] ))

        #** ---------------------------------------------------------------------------------------
        #*  salva a cabeceira atual em uso (0=principal/1=secundária)
        #*/
        self._oExe.setCabAtu(int(f_lstData[1]))
        #l_log.info ( "Exe.setCabAtu: " + str ( f_lstData [ 1 ] ))

        #** ---------------------------------------------------------------------------------------
        #*  salva os parâmetros de vento
        #*/
        self._oExe.setVento((float(f_lstData[2]), float(f_lstData[3])))
        #l_log.info ( "Exe.setVento_Vel: " + str ( f_lstData [ 2 ] ))
        #l_log.info ( "Exe.setVento_Dir: " + str ( f_lstData [ 3 ] ))

        #** ---------------------------------------------------------------------------------------
        #*  cria o PAR
        #*/
        l_oPAR = clsPAR.clsPAR(f_lstData[4:])
        #assert ( l_oPAR )

        #** ---------------------------------------------------------------------------------------
        #*  salva o PAR no exercício
        #*/
        self._oExe.setPAR(l_oPAR)

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log.debug ( "<< " )

        #** ---------------------------------------------------------------------------------------
        #*/
        return (True)
コード例 #6
0
ファイル: dlgEditExe.py プロジェクト: mlabru/sipar
    def accept(self):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "dlgEditExe::accept"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica condições de execução
        #*/
        #assert ( None != self._oTabExe )

        #** ---------------------------------------------------------------------------------------
        #*  obtém os dados do exercício
        #*/
        l_szKey = self.qleKey.text().toUpper()
        l_szDescr = self.qleDescr.text().toUpper()

        l_szPAR = self.cbxPAR.currentText().toUpper()
        l_szAnv = self.cbxAnv.currentText().toUpper()

        #** ---------------------------------------------------------------------------------------
        #*  obtém os valores do exercício
        #*/
        #l_iCab = int ( self.cbxCab.value ())
        l_iCab = 12

        #** ---------------------------------------------------------------------------------------
        #*  obtém os valores do exercício
        #*/
        l_fVentoVel = float(self.qsbVentoVel.value())
        l_fVentoDir = float(self.qsbVentoDir.value())

        l_fGateDist = float(self.qsbGateDist.value())
        l_fGateAfst = float(self.qsbGateAfst.value())
        l_fGateAlt = float(self.qsbGateAlt.value())

        #** ---------------------------------------------------------------------------------------
        #*  exercício inexistente ?
        #*/
        if (None == self._oExe):

            #** -----------------------------------------------------------------------------------
            #*  cria uma nova exercício
            #*/
            self._oExe = clsExe.clsExe([
                l_szKey, l_szDescr, l_szPAR, l_iCab, l_fVentoVel, l_fVentoDir,
                l_szAnv, l_fGateDist, l_fGateAfst, l_fGateAlt
            ])
            #assert ( self._oExe )

            #** -----------------------------------------------------------------------------------
            #*  cria uma nova entrada na tabela de exercícios com o exercício criado
            #*/
            self._oTabExe.add(self._oExe, l_szKey)

        #** ---------------------------------------------------------------------------------------
        #*  se existe, atualiza a informação
        #*/
        else:

            #** -----------------------------------------------------------------------------------
            #*  atualiza os dados do exercício
            #*/
            self._oTabExe.updateTabela(self._oExe, [
                l_szKey, l_szDescr, l_szPAR, l_iCab, l_fVentoVel, l_fVentoDir,
                l_szAnv, l_fGateDist, l_fGateAfst, l_fGateAlt
            ])

        #** ---------------------------------------------------------------------------------------
        #*  faz o "accept"
        #*/
        QtGui.QDialog.accept(self)
コード例 #7
0
ファイル: modelPiloto.py プロジェクト: mlabru/sicad.2008
    def iniciaBaseDados(self, f_szExe):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "modelPiloto::iniciaBaseDados"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica parâmetros de entrada
        #*/
        assert ((f_szExe) and ("" != f_szExe))

        #** ---------------------------------------------------------------------------------------
        #*  carrega o arquivo de exercício
        #*/
        self._oExe = clsExe.clsExe(f_szExe)
        assert (self._oExe)

        #** ---------------------------------------------------------------------------------------
        #*  obtem o indicativo do aeródromo
        #*/
        l_szInd = self._oExe.getIndicativo().upper()
        #l_log.info ( "Indicativo: " + l_szInd )

        #** ---------------------------------------------------------------------------------------
        #*  monta o nome do arquivo de aeródromo
        #*/
        l_szAer = data.filepath(os.path.join(locDefs.xDIR_AER, l_szInd))
        #l_log.info ( "Arquivo de aeródromo: " + l_szAer )

        #** ---------------------------------------------------------------------------------------
        #*  carrega o arquivo de aeródromo
        #*/
        self._oAer = clsAer.clsAer(l_szAer)
        assert (self._oAer)

        #** ---------------------------------------------------------------------------------------
        #*  calcula a direção das aeronaves, apartir dos valores de proa (lidos
        #*  no arquivo de exercício) e da diferenca de declinação (lido no
        #*  arquivo de aeródromo).
        #*/
        #pilCalc.calculaDireçãoAeronaves ()

        #** ---------------------------------------------------------------------------------------
        #*  carrega o arquivo de desenhos de aeronaves
        #*/
        #anvCls.loadDesenhosAeronaves ( data.filepath ( os.path.join ( locDefs.xARQ_TAB, locDefs.xARQ_DES )))

        #** ---------------------------------------------------------------------------------------
        #*  monta o nome do arquivo de performance
        #*/
        l_szPrf = data.filepath(
            os.path.join(glbDefs.xDIR_TAB, locDefs.xARQ_PRF))
        #l_log.info ( "Arquivo de performance: " + l_szPrf )

        #** ---------------------------------------------------------------------------------------
        #*  carrega a tabela de performance
        #*/
        self._oPrf = clsPrf.clsPrf(l_szPrf)
        assert (self._oPrf)

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log.debug ( "<< " )

        #** ---------------------------------------------------------------------------------------
        #*/
        return (True)
コード例 #8
0
ファイル: clsTabelaExe.py プロジェクト: mlabru/sipar
    def populateFromData(self, f_Data):

        #/ globals
        #/ ----------------------------------------------------------------------------------------
        #global locDefs.xMAX_Exercicios

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "clsTabelaExe::populateFromData"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  zera índices
        #*/
        l_iD = 0

        #** ---------------------------------------------------------------------------------------
        #*  calcula o número de exercícios na tabela
        #*/
        locDefs.xMAX_Exercicios = (len(f_Data) // 10)
        #l_log.info ( "locDefs.xMAX_Exercicios: " + str ( locDefs.xMAX_Exercicios ))

        #** ---------------------------------------------------------------------------------------
        #*  cria a tabela de exercícios
        #*/
        self._tabItens = [None for _ in xrange(locDefs.xMAX_Exercicios)]
        #assert ( self._tabItens )

        #l_log.info ( "self._tabItens: " + str ( self._tabItens ))

        #** ---------------------------------------------------------------------------------------
        #*  carrega os dados da tabela de exercícios
        #*/
        for _ in xrange(locDefs.xMAX_Exercicios):

            #l_log.info ( "l_btExe: " + str ( l_btExe ))

            #** -----------------------------------------------------------------------------------
            #*  chave do exercício
            #*/
            l_szKey = f_Data[l_iD].upper()
            l_iD += 1

            #l_log.info ( "_szKey: " + l_szKey )

            #** -----------------------------------------------------------------------------------
            #*  descrição
            #*/
            l_szDescr = f_Data[l_iD].upper().replace('_', ' ')
            l_iD += 1

            #l_log.info ( "_szDescr: " + str ( l_szDescr ))

            #** -----------------------------------------------------------------------------------
            #*  sítio PAR
            #*/
            l_szPAR = f_Data[l_iD].upper()
            l_iD += 1

            #l_log.info ( "_szPAR: " + str ( l_szPAR ))

            #** -----------------------------------------------------------------------------------
            #*  cabeceira atual em uso
            #*/
            l_iCab = int(f_Data[l_iD])
            l_iD += 1

            #l_log.info ( "_iCab: " + str ( l_iCab ))

            #** -----------------------------------------------------------------------------------
            #*  velocidade do vento
            #*/
            l_fVentoVel = float(f_Data[l_iD])
            l_iD += 1

            #l_log.info ( "_fVentoVel: " + str ( l_fVentoVel ))

            #** -----------------------------------------------------------------------------------
            #*  direção do vento
            #*/
            l_fVentoDir = float(f_Data[l_iD])
            l_iD += 1

            #l_log.info ( "_fVentoDir: " + str ( l_fVentoDir ))

            #** -----------------------------------------------------------------------------------
            #*  aeronave
            #*/
            l_szAnv = f_Data[l_iD].upper()
            l_iD += 1

            #l_log.info ( "_szAnv: " + str ( l_szAnv ))

            #** -----------------------------------------------------------------------------------
            #*  distância da aeronave
            #*/
            l_fGateDist = float(f_Data[l_iD])
            l_iD += 1

            #l_log.info ( "_fGateDist: " + str ( l_fGateDist ))

            #** -----------------------------------------------------------------------------------
            #*  afastamento do eixo da pista
            #*/
            l_fGateAfst = float(f_Data[l_iD])
            l_iD += 1

            #l_log.info ( "_fGateAfst: " + str ( l_fGateAfst ))

            #** -----------------------------------------------------------------------------------
            #*  altura da aeronave
            #*/
            l_fGateAlt = float(f_Data[l_iD])
            l_iD += 1

            #l_log.info ( "_fGateAlt: " + str ( l_fGateAlt ))

            #** -----------------------------------------------------------------------------------
            #*  cria o exercício
            #*/
            l_oExe = clsExe.clsExe([
                l_szKey, l_szDescr, l_szPAR, l_iCab, l_fVentoVel, l_fVentoDir,
                l_szAnv, l_fGateDist, l_fGateAfst, l_fGateAlt
            ])
            #assert ( l_oExe )

            #** -----------------------------------------------------------------------------------
            #*  coloca o exercício na tabela
            #*/
            self.add(l_oExe, l_szKey)

        #** ---------------------------------------------------------------------------------------
        #*  após a carga, reseta o flag dirty
        #*/
        self._bDirty = False
コード例 #9
0
ファイル: clsTabelaExe.py プロジェクト: mlabru/sipar
    def loadQDataStream(self):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "clsTabelaExe::loadQDataStream"

        #/ file descriptor
        #/ ----------------------------------------------------------------------------------------
        l_fdIn = None

        #/ mensagem de erro
        #/ ----------------------------------------------------------------------------------------
        l_szErro = None

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  tenta carregar o arquivo...
        #*/
        try:

            #** -----------------------------------------------------------------------------------
            #*  abre o arquivo
            #*/
            l_fdIn = QtCore.QFile(self._szFName)
            #assert ( l_fdIn )

            #** -----------------------------------------------------------------------------------
            #*  erro na abertura ?
            #*/
            if (not l_fdIn.open(QtCore.QIODevice.ReadOnly)):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, unicode(l_fdIn.errorString())

            #** -----------------------------------------------------------------------------------
            #*  acessa o arquivo como uma stream de dados
            #*/
            l_stream = QtCore.QDataStream(l_fdIn)
            #assert ( l_stream )

            #** -----------------------------------------------------------------------------------
            #*  lê o magic number
            #*/
            l_iMagic = l_stream.readInt32()

            #** -----------------------------------------------------------------------------------
            #*  tipo de arquivo válido ?
            #*/
            if (clsTabelaModel.c_xxMAGIC_NUMBER != l_iMagic):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, u"tipo de arquivo não reconhecido !"

            #** -----------------------------------------------------------------------------------
            #*  lê a versão do arquivo
            #*/
            l_iVersion = l_stream.readInt32()

            #** -----------------------------------------------------------------------------------
            #*  versão muito antiga ?
            #*/
            if (l_iVersion < clsTabelaModel.c_xxOLD_FILE_VERSION):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, u"formato do arquivo é antigo e não legível !"

            #** -----------------------------------------------------------------------------------
            #*  versão nova ?
            #*/
            elif (l_iVersion > clsTabelaModel.c_xxFILE_VERSION):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, u"formato do arquivo é novo e não legível !"

            #** -----------------------------------------------------------------------------------
            #*/
            l_stream.setVersion(QtCore.QDataStream.Qt_4_6)

            #** -----------------------------------------------------------------------------------
            #*/
            self.clear(False)

            #** -----------------------------------------------------------------------------------
            #*  enquanto não termina de ler a stream...
            #*/
            while (not l_stream.atEnd()):

                #** -------------------------------------------------------------------------------
                #*  cria a área para chave do exercício
                #*/
                l_szKey = QtCore.QString()

                #** -------------------------------------------------------------------------------
                #*  lê a chave do exercício
                #*/
                l_stream >> l_szKey

                #** -------------------------------------------------------------------------------
                #*  cria a área para descrição do exercício
                #*/
                l_szDescr = QtCore.QString()

                #** -------------------------------------------------------------------------------
                #*  lê a descrição do exercício
                #*/
                l_stream >> l_szDescr
                l_szDescr = l_szDescr.replace('_', ' ')

                #** -------------------------------------------------------------------------------
                #*  cria a área para chave do sítio PAR
                #*/
                l_szPAR = QtCore.QString()

                #** -------------------------------------------------------------------------------
                #*  lê a chave do sítio PAR
                #*/
                l_stream >> l_szPAR

                #** -------------------------------------------------------------------------------
                #*  lê a cabeceira atual em uso
                #*/
                l_iCab = l_stream.readInt()

                #** -------------------------------------------------------------------------------
                #*  lê a velocidade do vento
                #*/
                l_fVentoVel = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê a direção do vento
                #*/
                l_fVentoDir = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  cria a área para chave da aeronave
                #*/
                l_szAnv = QtCore.QString()

                #** -------------------------------------------------------------------------------
                #*  lê a chave da aeronave
                #*/
                l_stream >> l_szAnv

                #** -------------------------------------------------------------------------------
                #*  lê a distância da aeronave
                #*/
                l_fGateDist = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê o afastamento do eixo da pista
                #*/
                l_fGateAfst = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê a altura da aeronave
                #*/
                l_fGateAlt = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  cria o exercício e coloca na tabela
                #*/
                self.add(
                    clsExe.clsExe([
                        l_szKey, l_szDescr, l_szPAR, l_iCab, l_fVentoVel,
                        l_fVentoDir, l_szAnv, l_fGateDist, l_fGateAfst,
                        l_fGateAlt
                    ]), l_szKey)

        #** ---------------------------------------------------------------------------------------
        #*/
        except (IOError, OSError), e:

            #** -----------------------------------------------------------------------------------
            #*  cria a mensagem de erro
            #*/
            l_szErro = "Erro na carga: {0}".format(e)