Acessar DBF/CDX com Delphi 7
Moderador: Moderadores
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
Prezados,
Necessito criar uma rotina para acessar um DBF com índices CDX pelo Delphi. A rotina irá apenas localizar uma certa faixa de registros (filtro) e exibi-los. Dei uma olhada em alguns post aqui no fórum, mas confesso que não vi nada que me atendesse. Gostaria de algo bem simples, e de preferência free, pois a rotina é bem básica e não fará nenhum tipo de inclusão, alteração ou exclusão. Será que alguém poderia me ajuda?
Grato e aguardo qualquer orientação.
P.S.: Peço desculpas se o assunto "Delphi" não faz parte do fórum.
Necessito criar uma rotina para acessar um DBF com índices CDX pelo Delphi. A rotina irá apenas localizar uma certa faixa de registros (filtro) e exibi-los. Dei uma olhada em alguns post aqui no fórum, mas confesso que não vi nada que me atendesse. Gostaria de algo bem simples, e de preferência free, pois a rotina é bem básica e não fará nenhum tipo de inclusão, alteração ou exclusão. Será que alguém poderia me ajuda?
Grato e aguardo qualquer orientação.
P.S.: Peço desculpas se o assunto "Delphi" não faz parte do fórum.
Editado pela última vez por Toledo em 18 Jun 2017 08:49, em um total de 1 vez.
Razão: O presente tópico foi movido da seção CA-Clipper, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o Clipper.
Razão: O presente tópico foi movido da seção CA-Clipper, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o Clipper.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
Pode usar ADO e ADS Local.
"SELECT * FROM arquivo WHERE ....."
"SELECT * FROM arquivo WHERE ....."
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
O que exatamente você quis dizer com "ADS Local"?JoséQuintas escreveu:Pode usar ADO e ADS Local.
"SELECT * FROM arquivo WHERE ....."
Ficarei muito agradecido se o colega puder me mostrar o "caminho das pedras".
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
Acredito que toda linguagem de programação aceite ADO.
ADO aceita qualquer coisa, basta ter o ODBC instalado.
O Advantage Database Server tem um ODBC também.
Esse ODBC tem um diferencial: ele permite trabalhar SEM SERVIDOR ADS.
Não precisa licença pra isso.
Vai trabalhar com DBFs/CDXs usando comandos SQL, até melhor e mais rápido do que pelo Clipper ou Harbour.
Esse tipo de uso é chamado por eles de ADS LOCAL, mas permite trabalhar em rede normalmente.
Esse LOCAL é chamado assim porque é o próprio ODBC que faz tudo sem servidor, não tem a ver com não poder usar em rede.
ADO aceita qualquer coisa, basta ter o ODBC instalado.
O Advantage Database Server tem um ODBC também.
Esse ODBC tem um diferencial: ele permite trabalhar SEM SERVIDOR ADS.
Não precisa licença pra isso.
Vai trabalhar com DBFs/CDXs usando comandos SQL, até melhor e mais rápido do que pelo Clipper ou Harbour.
Esse tipo de uso é chamado por eles de ADS LOCAL, mas permite trabalhar em rede normalmente.
Esse LOCAL é chamado assim porque é o próprio ODBC que faz tudo sem servidor, não tem a ver com não poder usar em rede.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
Entendido. Mas pelo visto vou ter que utilizar esse "Advantage Database Server", é isso?JoséQuintas escreveu:Acredito que toda linguagem de programação aceite ADO.
ADO aceita qualquer coisa, basta ter o ODBC instalado.
O Advantage Database Server tem um ODBC também.
Esse ODBC tem um diferencial: ele permite trabalhar SEM SERVIDOR ADS.
Não precisa licença pra isso.
Vai trabalhar com DBFs/CDXs usando comandos SQL, até melhor e mais rápido do que pelo Clipper ou Harbour.
Esse tipo de uso é chamado por eles de ADS LOCAL, mas permite trabalhar em rede normalmente.
Esse LOCAL é chamado assim porque é o próprio ODBC que faz tudo sem servidor, não tem a ver com não poder usar em rede.
Abrir e manipular DBFs com Delphi não vejo complicação alguma, até mesmo porque existem alguns componentes para essa finalidade.
O meu problema é que nunca necessitei "associar" um DBF a um CDX para puder ter um ordenamento dos dados.
Vou fazer uma simulação aqui e volto para te dar uma retorno.
Grato pela pronta atenção.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
O ADS só vai ser interessante pra trabalhar simultâneo com Clipper/Harbour, ou pra aproveitar CDX existente.
Mas com ou sem CDX, no comando SQL basta o ORDER BY pra deixar em ordem.
A própria Microsoft tinha/tem ODBC pra dBASE, FoxPro e Visual FoxPro.
Quando digo simultâneo, me refiro a ler e gravar, mesmo estando em uso.
Mas com ou sem CDX, no comando SQL basta o ORDER BY pra deixar em ordem.
A própria Microsoft tinha/tem ODBC pra dBASE, FoxPro e Visual FoxPro.
Quando digo simultâneo, me refiro a ler e gravar, mesmo estando em uso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
Eu acho que havia entendido errado! Pensei que com o ADS a coisa iria ficar bem melhor.
Você tem toda razão quando menciona em dar um "SELECT" para filtrar e "ORDER BY" para organizar o filtro. Claro que se eu já consigo acessar todos os DBFs, para filtrar eu realmente não necessitarei do CDX. O problema foi que eu me "abstrai" e fiquei pensando como "CLIPEIRO" (rs), aonde para dinamizar o "filtro" eu teria que posicionar o ponteiro de registros no primeiro registro da tal condição de filtro necessária. Será que o filtro (SELECT) somente nos DBFs ficará rápido? Pergunto no caso de uma tabela (DBF) como muitos registros.
Comantário: Eu "corri" atrás do ADS e instalei tudo que pude, até mesmo uns componentes no Delphi eu instalei, mas não consegui fazer funcionar nada em RUN TIME. No modo interativo utilizando um tal de "Advantage Data Architect" eu consegui na boa, tanto abrir os DBFs como os CDXs. Bem legal!
Mais uma vez obrigado pela sua valiosa atenção e aguardo pelo seu comentário.
Forte abraço!
Você tem toda razão quando menciona em dar um "SELECT" para filtrar e "ORDER BY" para organizar o filtro. Claro que se eu já consigo acessar todos os DBFs, para filtrar eu realmente não necessitarei do CDX. O problema foi que eu me "abstrai" e fiquei pensando como "CLIPEIRO" (rs), aonde para dinamizar o "filtro" eu teria que posicionar o ponteiro de registros no primeiro registro da tal condição de filtro necessária. Será que o filtro (SELECT) somente nos DBFs ficará rápido? Pergunto no caso de uma tabela (DBF) como muitos registros.
Comantário: Eu "corri" atrás do ADS e instalei tudo que pude, até mesmo uns componentes no Delphi eu instalei, mas não consegui fazer funcionar nada em RUN TIME. No modo interativo utilizando um tal de "Advantage Data Architect" eu consegui na boa, tanto abrir os DBFs como os CDXs. Bem legal!
Mais uma vez obrigado pela sua valiosa atenção e aguardo pelo seu comentário.
Forte abraço!
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
Igual SQL. Se existir CDX que ajude a fircar mais rápido, vai ser usado automaticamente.
Numa base de 16 milhões de registros, sem índice fica uma carroça.
Com a vinda de 64 bits, parece que é mais chatinho de instalar o ODBC.
Nem sei de onde tirou o Advantage Architet, deve ter instalado o servidor....
Numa base de 16 milhões de registros, sem índice fica uma carroça.
Com a vinda de 64 bits, parece que é mais chatinho de instalar o ODBC.
Nem sei de onde tirou o Advantage Architet, deve ter instalado o servidor....
Código: Selecionar todos
Case "ADSLOCAL"
cString = "Provider=Advantage.OLEDB.1;" & _
"Mode=Share Deny None;" & _
"Show Deleted Records in DBF Tables with Advantage=False;" & _
"Data Source=" & Sistema.PathDefault & ";Advantage Server Type=ADS_Local_Server;" & _
"TableType=ADS_CDX;Security Mode=ADS_IGNORERIGHTS;" & _
"Lock Mode=Compatible;" & _
"Use NULL values in DBF Tables with Advantage=True;" & _
"Exclusive=No;Deleted=No;"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
Se for instalar manualmente, seriam estes arquivos:
sendo que o ACE32.DLL precisa estar ou na pasta do aplicativo ou junto com as DLLs.
A data dos arquivos deve ser a data que mexi com isso, 11 anos atrás.
De lá pra cá, a Microsoft mudou um pouco a parte de 64 bits, e complicou um pouquinho o OLEDB que ela tinha inventado e que o ADS usa/usava...
Código: Selecionar todos
12/09/2006 07:10 937.984 ace32.dll
12/09/2006 07:10 1.241.088 adsloc32.dll
12/09/2006 07:10 462.848 ADSOLEDB.DLL
12/09/2006 07:10 159.744 axcws32.dll
A data dos arquivos deve ser a data que mexi com isso, 11 anos atrás.
De lá pra cá, a Microsoft mudou um pouco a parte de 64 bits, e complicou um pouquinho o OLEDB que ela tinha inventado e que o ADS usa/usava...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
Nossa, se ficar lento não vai dar certo!!!
Eu necessitaria deixar com o tempo de acesso semelhante ao de um banco de dados relacional. Claro que se ficar uma pouco lento, algo suportável, não tem problema. Com relação a 32 ou 64 bits não tem problema, pois posso compilar a rotinas no OS que ficar melhor ou mais fácil.
Vou pegar esse seu exemplo de conexão/ODBC e ver o que consigo fazer.
Sobre o ADS, eu baixei tudo lá do site deles e fui testando.
Eu necessitaria deixar com o tempo de acesso semelhante ao de um banco de dados relacional. Claro que se ficar uma pouco lento, algo suportável, não tem problema. Com relação a 32 ou 64 bits não tem problema, pois posso compilar a rotinas no OS que ficar melhor ou mais fácil.
Vou pegar esse seu exemplo de conexão/ODBC e ver o que consigo fazer.
Sobre o ADS, eu baixei tudo lá do site deles e fui testando.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
É igual banco de dados relacional.
Se tiver índice (CDX) pra ajudar, é mais rápido.
Uma base com 16 milhões de registros, e com índice por código, o SELECT de um código é instantâneo.
Acredito que no MySQL seja a mesma coisa.
Faltou dizer:
Os comandos SQL do ADS são compatíveis com SQL Server, e não com MySQL.
Aquilo de SELECT TOP x ao invés de SELECT ... LIMIT x
Se tiver índice (CDX) pra ajudar, é mais rápido.
Uma base com 16 milhões de registros, e com índice por código, o SELECT de um código é instantâneo.
Acredito que no MySQL seja a mesma coisa.
Faltou dizer:
Os comandos SQL do ADS são compatíveis com SQL Server, e não com MySQL.
Aquilo de SELECT TOP x ao invés de SELECT ... LIMIT x
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
Entendido.
Vou ficar fuçando aqui e ver o que consigo.
Qualquer dúvida ou acerto darei retorno.
Grato.
Vou ficar fuçando aqui e ver o que consigo.
Qualquer dúvida ou acerto darei retorno.
Grato.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- aprendiz_ce
- Usuário Nível 3

- Mensagens: 147
- Registrado em: 21 Jul 2011 10:05
- Localização: Fortaleza/CE
Acessar DBF/CDX com Delphi 7
JoséQuintas, bom dia.
Consegui fazer uma pequena rotina para acessar os dados e deu certinho. Só consegui fazer utilizando os componentes
ADS instalados no Delphi. Aparentemente os mesmo só funcionando utilizando "alias" criados pelo "Advantage Data Architect".
Se for assim, não sei como vou distribuir um app definitivo. Detesto ter que ficar configuração o OS para que o app possa rodar certo,
pois gosto de "soltar" o app na máquina e pronto, daí ver o mesmo rodar.
Fiz uns teste com ODBC do ADS, mas sem sucesso. Vou ver se ainda consigo algo nesse sentido.
Dúvida:
Eu mexo com Harbour 3.2, sendo assim, será que ficaria fácil com o conhecimento (pouco) que eu tenho e no lugar do Delphi, utilizar o
xHarbour para fazer essa rotina, haja vista que a mesmo tem que ser em modo visual. Mas isso seria em ultimo caso!
Grato e aguardo pelo seu comentário.
Consegui fazer uma pequena rotina para acessar os dados e deu certinho. Só consegui fazer utilizando os componentes
ADS instalados no Delphi. Aparentemente os mesmo só funcionando utilizando "alias" criados pelo "Advantage Data Architect".
Se for assim, não sei como vou distribuir um app definitivo. Detesto ter que ficar configuração o OS para que o app possa rodar certo,
pois gosto de "soltar" o app na máquina e pronto, daí ver o mesmo rodar.
Fiz uns teste com ODBC do ADS, mas sem sucesso. Vou ver se ainda consigo algo nesse sentido.
Dúvida:
Eu mexo com Harbour 3.2, sendo assim, será que ficaria fácil com o conhecimento (pouco) que eu tenho e no lugar do Delphi, utilizar o
xHarbour para fazer essa rotina, haja vista que a mesmo tem que ser em modo visual. Mas isso seria em ultimo caso!
Grato e aguardo pelo seu comentário.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acessar DBF/CDX com Delphi 7
Não vi a mensagem antes.
Teria que ver qual a opção pra Delphi sobre como configurar as coisas.
O que eu usava no VB:
E mais algumas coisas no ADS.INI, pra por exemplo aumentar o limite de usuários simultâneos e acesso via terminal service.
Nunca usei esse Data Architect. Acredito que seja outra forma de definir configurações, em arquivo próprio
Teria que ver qual a opção pra Delphi sobre como configurar as coisas.
O que eu usava no VB:
Código: Selecionar todos
Case "ADSLOCAL"
cString = "Provider=Advantage.OLEDB.1;" & _
"Mode=Share Deny None;" & _
"Show Deleted Records in DBF Tables with Advantage=False;" & _
"Data Source=" & Sistema.PathDefault & ";Advantage Server Type=ADS_Local_Server;" & _
"TableType=ADS_CDX;Security Mode=ADS_IGNORERIGHTS;" & _
"Lock Mode=Compatible;" & _
"Use NULL values in DBF Tables with Advantage=True;" & _
"Exclusive=No;Deleted=No;"
Nunca usei esse Data Architect. Acredito que seja outra forma de definir configurações, em arquivo próprio
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/