Página 1 de 1
Harbour
Enviado: 20 Jun 2017 13:50
por Antonio
Pessoal, no código abaixo em negrito:
Public CNN
Try
CNN:=createObject("ADODB.Connection")
CNN:Open("Driver={PostgreSQL UNICODE};" + "Server=localhost;" + "Port=5432;" + "Database=agendacontatos;" + "Uid=postgres;" + "Pwd=crisen2384;")
Catch e
Error Connection CNN
ExitProcess(0)
End
A instrução é do harbour ou de alguma LIB grafica?
Harbour
Enviado: 20 Jun 2017 14:14
por janio
Do Harbour NAO é.
hbmk2 -find ExitProcess
No fonte
windows.c da
hwgui consta essa função
Deve ser da hwgui
Harbour
Enviado: 20 Jun 2017 15:03
por Antonio
Obrigado Janio!
Sabem qual seria o comando que substitui esse ExitProcess( 0 ) ou qual sua finalidade? Deve ser para abandonar algum processo, talvez.
O que substituiria esse comando em harbour?
Grato
Harbour
Enviado: 20 Jun 2017 16:52
por acelconsultoria
Olá, Antônio
Precisava identificar de qual linguagem você extraiu esse trecho de código. Tem um TRY / CATCH aí no meio, que inicialmente tinha apenas no xHarbour, e só algum tempo depois foi implementado no Harbour.
Se for levar em consideração como funciona o ExitProcess na API do Windows, seria para SAIR do processo, zerando todas as dependências dele (threads).
Harbour
Enviado: 20 Jun 2017 17:03
por Antonio
Ola Maickon Sato
Eu acho que isso tem relação com um arquivo adodb.ch que roda pela net a principio nos exemplos na minigui.
Harbour
Enviado: 20 Jun 2017 20:20
por JoséQuintas
Se não me engano vi isso na HMG.
Mas a pergunta melhor é: Pra que precisa disso?
Harbour
Enviado: 20 Jun 2017 20:30
por JoséQuintas
Harbour
Enviado: 20 Jun 2017 21:07
por asimoes
Se for hwGui:
Hwg_ExitProcess()
Essa função mata a aplicação do processo windows, o mesmo caso para HMG - ExitProcess()
Harbour
Enviado: 21 Jun 2017 07:53
por JoséQuintas
é uma função da API do Windows.
https://msdn.microsoft.com/pt-br/librar ... s.85).aspx
Não é pra ser usada à vontade.
Calling ExitProcess in a DLL can lead to unexpected application or system errors. Be sure to call ExitProcess from a DLL only if you know which applications or system components will load the DLL and that it is safe to call ExitProcess in this context.
Exiting a process does not cause child processes to be terminated.
Exiting a process does not necessarily remove the process object from the operating system. A process object is deleted when the last handle to the process is closed.
Vamos pensar....
Colocar no fonte uma rotina de tratamento de erro...
Pra encerrar tudo no caso de erro, talvez nem mostrando mensagem de erro.
Isso não é tratamento, é extermínio mesmo.... rs
Harbour
Enviado: 21 Jun 2017 11:17
por Antonio
Bom dia!!
Eu observei sobre o assunto dentro de um fragmento de codigo:
Código: Selecionar todos
/*
* Agenda de Contatos
* Humberto Fornazier - Março/2003
* hfornazier@brfree.com.br
*
* xHarbour Compiler Build 0.73.26 (SimpLex )
* Copyright 1999-2002, http://www.xharbour.org http://www.harbour-project.org/
*
* MINIGUI - Harbour Win32 GUI library - Release 60
* Copyright 2002 Roberto Lopez <roblez@ciudad.com.ar>
* http://www.geocities.com/harbour_minigui/
*
*/
/*
Conversao para utilizacao de banco de dados,utilizando a tecnologia ADO
ivanil Marcelino
ivanilm@ig.com.br
Minigui x Harbour
*/
/*
Conversao para utilizacao de banco de dados Firebird ,utilizando a tecnologia ADO
Ramon A. Körber Jr
ramonkorberjr@yahoo.com.br
Minigui Extend 1.59 x Harbour 1.1.0
Necessidades minimas do firebird para rodar este programa
Firebird 1.55 - Baixar de: http://prdownloads.sourceforge.net/firebird/Firebird-1.5.5.4926-3-Win32.exe
Driver ODBC - Baixar de: http://www.praktik.km.ua/downloads/Firebird_ODBC_2.0.0-Win32.exe
Instalar os dois, não é necessário mais nenhuma configuração pois usa-se uma conexão dnsless.
Copiar a dll fbclient.dll do diretório C:\Arquivos de programas\Firebird\Firebird_1_5\bin para a pasta raiz do sistema
O Arquivo Ado210.chm é um Help dos comandos do ADODB
Este programa poderá usar qualquer banco de dados, apenas trocando a string de conexão ao banco, não
é específico só para o Firebird
*/
#Include "minigui.ch"
#Include "winprint.ch"
#Include "ADODB.CH"
#define BLUE { 0, 0, 128 }
Function Main()
Local i := 0
****Criar a Conexao
Public CNN
Try
CNN:=CreateObject("ADODB.Connection")
CNN:Open("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=.\agenda.fdb;CHARSET=WIN1252;DIALECT=3;CLIENT=fbclient.dll")
Catch e
Error Connection CNN
ExitProcess(0)
End
****
SET CENTURY ON
Private lNovo := .F.
DEFINE WINDOW Form_Principal ;
AT 0,0 ;
WIDTH 450 ;
HEIGHT 470 ;
TITLE "Agenda de Contatos" ;
MAIN ;
ICON "AGENDA" ;
NOMAXIMIZE ;
NOSIZE ;
ON RELEASE Finaliza_Sistema() ;
BACKCOLOR BLUE
...
Eu gostaria de saber o que é o ExitProcess() e se poderia ser substituido por algum comando harbour para tentar utilizar banco de dados em modo console com o uso do ADO.
Ja sei que trata-se de algo relacionado com a API do Windows.
Parece que a logica que implementa esse metodo tambem esta equivocada.
Eu compilei o harbour 3.4 e la é possivel trabalhar com a tela fullscreen.
Pretendo como disse, trabalhar com banco de dados em modo console.
A intenção ao final é tentar utilizar a visual lib em tela cheia, acessando banco de dados.
Obrigado
Harbour
Enviado: 21 Jun 2017 11:50
por acelconsultoria
Então esse ExitProcess() é da MiniGUI com xHarbour.
Parece que o programa aborta todos os processos caso haja uma falha na conexão. A MiniGUI é uma lib gráfica e pelo que vejo o pessoal já baixa ela com uma outra versão do Harbour junto, apropriado pra trabalhar com essa lib.
Já que você quer continuar em console e com o Harbour 3.4, eu tentaria reescrever esse código aí, colocando uma mensagem de erro e saindo do sistema caso haja problemas de conexão com o BD.
Mas também nada impede que você utilize a MiniGUI, em modo console. Aí você já aproveita o mesmo código. Você pode muito bem utilizar a HMG, vem com o Harbour 3.2 e dá pra trabalhar em modo console também.
Harbour
Enviado: 21 Jun 2017 12:05
por Antonio
Obrigado Maickon Sato
Harbour
Enviado: 21 Jun 2017 14:00
por JoséQuintas
Não sei porque insistir nisso.
Deixando a "miniguada" de lado...
Código: Selecionar todos
lOk := .F.
BEGIN SEQUENCE WITH __BreakBlock()
cn := win_OleCreateObject( "ADODB.Connection" )
cn:Open( "Driver={PostgreSQL UNICODE};" + "Server=localhost;" + "Port=5432;" + "Database=agendacontatos;" + "Uid=postgres;" + "Pwd=crisen2384;" )
lOk := .T.
ENDSEQUENCE
IF ! lOk
? "Não foi possível conectar"
ENDIF
Harbour
Enviado: 21 Jun 2017 14:36
por Antonio
Obrigado José Quintas!
A toda regra cabe uma exceção.
Neste caso, como o sistema é para atender a uma necessidade minha e eu tenho preferencia pelo modo console por inúmeros motivos, então estou optando pelo modo console.
A minigui é legal? É, e tanto é que posso optar por usar ela hibrida embora com o sistema em console e aderir totalmente a mesma no decorrer dos trabalhos.
Obrigado.
Harbour
Enviado: 21 Jun 2017 15:25
por JoséQuintas
posso optar por usar ela hibrida embora com o sistema em console e aderir totalmente a mesma no decorrer dos trabalhos
Também pensava assim, até colocar em prática.
Ficar reiniciando o computador pro Windows voltar ao normal é muito chato.
Mas, talvez dependa da forma de uso.
Qualquer novidade, avise.