Alguns aplicativos do Windows recebem o parâmetro "/p" que serve para abrir e imprimir, mas nem todos.
Você pode imaginar o que isto significa quanto às impressoras USB ou "Windows Only" ???
Este é o nosso livro de dicas para os programadores.
A diferença aqui neste novo site é que o usuário registrado poderá adicionar suas dicas também ou fazer comentários e ver tudo publicado automaticamente, pois para o usuário registrado aparecerá o link "Nova subpágina" e "Comentar" no rodapé desta página onde o mesmo poderá começar a interagir.
Participe!
Assistência Remota
Assistência Remota
Você já ouviu falar em PC Anywhere? Assistência Remota do MSN? Estar em dois lugares ao mesmo tempo? É disso que estamos falando.
A assistência remota simula o teclado e monitor do computador do seu cliente no seu computador, ou seja, é como você estivesse na mesa do computador do seu cliente.
Este processo não é perigoso porque um computador precisa convidar o outro e este precisa aceitar. Além disso, a qualquer momento pode ser interrompido a conexão pelo anfitrião (aquele que convida) e normalmente é feito entre pessoas que se conhecem porque alguns dados particulares são necessários.
Tempo é dinheiro. Muitas vezes você não precisa ir até o seu cliente, basta uma assistência remota para resolver tudo.
Utilizando a assistência remota do Windows Live Messenger (MSN)
É muito simples! Basta orientar o seu cliente para clicar no botão "mostrar menu" (canto direito da barra de menu) Ações
Solicitar assistência remota.
Veja a ilustração a seguir:
Utilizando o VNC4
O VNC4 é um programa Freeware (ou melhor, tem uma versão Freeware), por isso estamos tratando dele aqui. Veja o site: http://www.realvnc.com/
A instalação do VNC4 tem menos de 700Kb!!!
Se você é o responsável técnico de uma empresa com vários computadores e todos ficam te chamando o tempo todo, o VNC4 vai ajudar você a não ter que ir para lá e para cá, subindo e descendo escadas...
Se você tem clientes em outra cidade, não precisa mais viajar para fazer seu diagnóstico.
O VNC4 (Assim como qualquer programa de Acesso Remoto, tipo PC Anywhere, LogMeIn, "Acesso Remoto" do Windows XP etc) emula o teclado e o monitor de um outro computador, é como se você estivesse operando no outro computador.
Vamos lá!
Quando você instala o VNC4, ele cria um grupo de programas no "Menu Iniciar" de seu computador chamado "RealVNC" e dentro dele, há 3 outros grupos VNC Server 4 (Service-Mode), VNC Server 4 (User-Mode) e VNC Viewer 4.
Configurar o Anfitrião(Host) ou Servidor:
1. Dê dois cliques no ícone do VNC na bandeja do Windows (Tray -aqueles íconezinhos que ficam no canto direito da Barra de Tarefas, no canto inferior direito da tela), selecione a aba "Authentication", clique no botão SET PASSWORD. Ponha uma senha! Deixe marcado o "Prompt local user to accept incoming connections".
2. Execute o "Run VNC Server", vá em:
Menu Iniciar > RealVNC > VNC Server 4 (User-Mode) > Run VNC Server
3. Passe o mouse em cima do ícone do VNC na Barra de Tarefas e anote o endereço IP da sua máquina. Você também pode executar o comando "ipconfig" na janela do MS-DOS que vai te dar o nº do IP do seu computador.
Resumo: Rodar o servidor em User-Mode, definir senha e anotar o IP.
Configurar o Convidado (Guest):
1. Execute o "Run VNC Viewer"
Menu Iniciar > RealVNC > VNC Viewer 4 > Run VNC Viewer
2. Abrirá uma janela. Coloque o IP do computador remoto (Anfitrião).
3. Abrirá uma janela pedindo a senha. Coloque a senha do computador remoto (Anfitrião). Definida no item 1 da configuração do Anfitrião.
Anfitrião, Host, Servidor, em nosso caso, é tudo a mesma coisa.
Convidado e Guest é a mesma coisa. É o computador que vai acessar o computador da outra pessoa, enquanto que, anfitrião é o computador que vai receber a "visita" (acesso remoto) do convidado.
É lógico que o Anfitrião precisa passar as informações sobre a senha e o IP dele para o Convidado! Sem estas informações não é possível o acesso remoto. Também não é possível acessar o computador remoto sem que o Anfitrião permita que o Convidado entre! O Anfitrião recebe uma mensagem quando alguém tenta o acessar e ele permite ou não.
Boa sorte!!!
Blinker
__ __ («») (__) BLINKER DOS Extender and Windows Linker ⌂ ___ Blink and you'll miss it !!
Site do fabricante: http://www.blinkinc.com/blinker.htm
Blinker substitui o papel do RTLINK do Clipper podendo transformar o programa em um executável que pode rodar acima da memória base (primeiros 640Kb RAM) com a opção dual mode (recomendada) ou extended mode. É uma solução para problemas de memória baixa do computador quando seu programa está muito grande.
Programas linkados com o Blinker requerem que no mínimo o HIMEM.SYS esteja instalado no computador para que rodem em modo protegido. Se não há nenhum gerenciador de memória (HIMEM; QEMM; 386MAX; NetRoom etc.) então dual mode reverte para real mode e extended mode terminam com erro.
Crie executáveis que rodem em modo protegido, acesso direto a 16Mb de memória física e 64Mb de memória virtual;
Livre de Royalties;
Comprime os arquivos em até 70% (o arquivo continua sendo executável, não precisa descompactá-lo para rodá-lo!!!);
Inclui número de série e versões de demonstração completamente funcionais, se você quiser;
Use as funções "SWAP" para chamar programas externos extensos como um sistema de relatório grafico em CLBC ou um processador de textos como o EDIT do DOS (Seu sistema fica em stand-by ocupando menos de 10Kb);
Linkedição em menos de 1 segundo (encontrei problemas com esta opção na versão 4.x).
Na minha opinião, este é o mais completo e profissional linkeditor do mercado.
Sugestão de uso:
BLINKER FILE <menu> <@settings>
Onde menu é um arquivo LNK que você usaria com o RTLINK, no caso menu.lnk.
E settings é um arquivo LNK que contém parâmetros de configuração do Blinker, no caso settings.lnk.
Você pode criar vários arquivos com parâmetros de configuração do Blinker para cada necessidade, tipo:
Compilação final para o cliente (final.lnk):
# BLINKER SCRIPT FILE
# Por ANDERSON
#######################
BLINKER EXECUTABLE DUAL
BLINKER EXECUTABLE COMPRESS 1
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE CLIPPER //F:250 //DYNF:8 //SWAPK:65535 //SWAPPATH:"C:\TEMP
BLINKER MESSAGE WINK
BLINKER INCREMENTAL OFF
NOBELL
STACK 7168
SEARCH BLXCLP52
LIB CLIPPER
/NOE;
MAP A,S
Chamaria como: BLINKER FILE menu.lnk @final.lnk
Compilação em fase de produção com DEBUG (teste.lnk):
# BLINKER SCRIPT FILE
# Por ANDERSON
#######################
BLINKER EXECUTABLE DUAL
BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE CLIPPER //F:250 //DYNF:8 //SWAPK:65535 //SWAPPATH:"C:\TEMP"
NOBELL
STACK 7168
SEARCH BLXCLP52
FILE CLD.LIB
LIB CLIPPER
/NOE;
MAP A,S
Chamaria como: BLINKER FILE menu.lnk @teste.lnk
Veja que os exemplos acima são enxutos. Cuidado para não se empolgar com os diversos comandos de configuração que o Blinker tem, pois você acaba tendo problemas indesejáveis de GPF (Global Protection Fault) no executável que fica abortando a execução com este erro.
Use arquivos pequenos e objetivos como os exemplos listados cima.
Para criar uma versão final de demonstração para um potencial cliente (AAAA/MM/DD):
BLINKER FILE menu.lnk @final.lnk BLINKER DEMONSTRATION DATE 2010/05/01
Compila o sistema e o libera para execução até 01/05/2010.
Como executar aplicativos Windows pelo Clipper
Como executar aplicativos Windows pelo Clipper
Abrir um arquivo de texto no NotePad do Windows...
cAPLICATIVO := "NotePad.exe" cARQUIVO := "arquivo.txt" RUN ( "Start "+cAPLICATIVO +" "+ cARQUIVO )
Abrir um arquivo de texto no NotePad do Windows, imprimí-lo e sair...
cAPLICATIVO := "NotePad.exe" cARQUIVO := "meu_arquivo.txt" RUN ( "Start "+cAPLICATIVO +" " + cARQUIVO + " /p")
Alguns aplicativos do Windows recebem o parâmetro "/p" que serve para abrir e imprimir, mas nem todos.
Você pode imaginar o que isto significa quanto às impressoras USB ou "Windows Only" ???
A impressão de arquivos com fonte, tamanho e estilo personalizados podem ser criados através da confecção de um arquivo no formato da extensão .RTF (Rich Text Format) e impressos no WordPad do Windows, ao invés do NotePad.
CLIP
CLIP - Compilador Clipper open-source russo
Neste documento iremos conhecer o CLIP, um compilador clipper para Linux. Além da total compatibilidade com o compilador CA-Clipper, este compilador oferece acesso a banco de dados cliente-servidor (Interbase, Oracle, MySQL e outros) e proporciona a elaboração de programa com interface gráfica usando a biblioteca GTK.
CLIP trata-se de um compilador CLIPPER para Linux desenvolvido pelos Russos. São tantas vantagens que este compilador nos proporciona, que irei mencionar apenas as principais:
Planejamento do projeto:
Obrigado Alessandro, pela dica.
Fonte: FARIA, Alessandro de Oliveira. Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux! In: <http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2584>. Acessado em: 25/04/2010.
Como Agilizar o Tráfego da Rede no Clipper
Como Agilizar o Tráfego da Rede no Clipper
1. Criar arquivos temporários na unidade de disco local (Dica: Coloque o aplicativo na estação cliente (Windows: local do objeto) executando no servidor (Windows: Iniciar em:), lembre da função GETENV() para obter o diretório temporário da estação -mais elegante.)
2. Crie arquivo de índice temporário para filtrar o banco de dados, não use SET FILTER.
cRANDOM := ALLTRIM(STR(RAN(9999))) // gera número aleatório de 0 a 9999 fINDEX3 := xTEMP+"TEMP" + cRANDOM // gera nome do arquivo temporário. xTEMP é uma pasta local. INDEX ON RIGHT(CTR,2)+LEFT(CTR,3)+DESCEND(DTOS(PRAZO)) TAG PRAZO TO (fINDEX3) ; FOR !EMPTY(PRAZO) .AND. PRAZO>=DATE(); /* AQUI VAI O "FILTRO" */ ADDITIVE TEMPORARY /* ADDITIVE: Cria índice sem fechar o demais abertos. TEMPORARY: apaga esse índice se fechar o respectivo DBF.
2. Não fique abrindo e fechando os bancos de dados. Simplesmente deixe-os abertos.
3. Programe de forma mais objetiva possível. Não reinvente a roda.
4. Não use LOCATEs, REPLACE ALL ou qualquer comando que pesquise o DBF inteiro.
5. Acrescente memória ao servidor para um grande cache de disco.
6. Encontre um servidor que gerencie o cache de gravação/leitura (e/s) eficientemente (hardware ou software).
7. USE... EXCLUSIVE sempre quando possível.
8. Certifique-se de que nenhum anti-vírus entra no caminho (use servidor Unix/Linux).
9. Use índices mais rápidos como os do formato da extensão .CDX ou .NSX (Comix ou SixDrive).
10. Verifique se o tipo de cabeamento e as placas de rede podem ser melhorados (trocados por mais rápido). Consulte um especialista em redes.
11. Verifique se a velocidade do disco rígido é boa
Prefira NVMe! NVMe > SSD > HD: O SSD é 10x mais rápido do que um HD. Já o NVMe é 10x mais rápido do que um SSD.
O HD SCSI era o recomendado para servidores de rede antigamente.
HD SATA III só funciona com o cabo Flat adequado/próprio. Não use um HD SATA III com cabo de SATA II.
Instale 2 (dois) HDs em RAID modo strip para dobrar a velocidade. Precisa ser da mesma marca, modelo e tamanho.
12. Impressora lenta no Windows 98: incluir essas linhas no arquivo SYSTEM.INI logo após o final da lista [386enh]
[NetWork]
PrintBufTime=1
[IfsMgr]
PrintBufTime=1
13. Impressora lenta no 2000/XP/VISTA: Execute o REGEDIT e mude a chave a seguir conforme indicado:
HKLM\SYSTEM\CurrentControlSet\LPT_timeout = 1
14. Use um servidor de banco de dados, como o LetoDBf (solução gratuita, funciona com [x]Harbour). Funciona com servidor Windows e Linux.
Clipper no Windows 95/98/ME/2000/NT/XP/10/11 32bits
Aqui você vai aprender a instalar o Clipper nas versões do Windows mais antigas. Primeiramente instale o VirtualBox, depois instale uma das versões do Windows acima nele.
A configuração abaixo é para o programador (Para o usuário, você pode remover as variáveis de ambiente LIB, OBJ, BIN e INCLUDE).
Considere que o Clipper foi instalado na unidade C:, no diretório Clipper5 e dentro dele tenha os subdiretórios LIB, OBJ, BIN e INCLUDE.
Vamos partir da instalação do Clipper que tem 2 disquetes, mas se você copiá-los para uma mesma pasta do HD não vai funcionar.
Isso tudo porque simplesmente tem um arquivo de mesmo nome em ambos os disquetes chamado DISK.ID. Então faça o seguinte:
Você também pode jogar tudo numa pasta só, basta controlar a informação que tem dentro do arquivo DISK.ID corretamente que é o seguinte:
CA-Clipper 5.2
5.2
Installation Disk 1
No disco 2, só muda a última linha que vai ter "Installation Disk 2". Aí, quando pedir o disco 2, pode voltar ao Windows e editar o arquivo DISK.ID com o Notepad e gravar a informação correta. Depois, voltar a instalação normalmente.
Windows 95/98
Inclua estas linhas no AUTOEXEC.BAT:
SET CLIPPER=//F:225 //DYNF:8 //SWAPK:65535 //SWAPPATH:"C:\TEMP" //TEMPPATH:"C:\TEMP" SET LIB=C:\CLIPPER5\LIB SET OBJ=C:\CLIPPER5\OBJ SET BIN=C:\CLIPPER5\BIN SET INCLUDE=C:\CLIPPER5\INCLUDE SET PATH=%PATH%;C:\CLIPPER5\BIN
Atenção: Não substitua a linha SET PATH existente do seu AUTOEXEC.BAT, inclua esta outra nova linha com este SET PATH abaixo da existente!
Inclua estas linhas no CONFIG.SYS:
FILES=225 BUFFERS=80 STACKS=9,256
Reinicie a máquina para que as configurações tenham efeito.
Windows ME
Clique no menu iniciar, executar e digite: msconfig;
Clique na aba, SYSTEM.INI, procure pelo bloco que inicia com a seguinte chave [386Enh];
Selecione a linha que contém a chave PerVMFiles, clique no botão "Editar" e defina o valor: PerVMFiles=225
Reinicie a máquina para que as configurações tenham efeito.
HKEY_LOCAL_MACHINE\SYSTEM\currentcontrolset\control\session manager\environment
A chave de registro do Windows é editada por meio do aplicativo chamado REGEDIT, vá em Menu Iniciar, Executar e digite REGEDIT e tecle <Enter>.
Windows 2000/XP/NT
Essas versões do windows não tem os arquivos de configuração AUTOEXEC.BAT e CONFIG.SYS, necessários para determinar a quantidade de arquivos a serem abertos por um aplicativo MS-DOS.
Abra o arquivo AUTOEXEC.NT que está no diretório WINDOWS \ SYSTEM32 e inclua estas linhas :
SET CLIPPER=//F:225 SET LIB=C:\CLIPPER5\LIB SET OBJ=C:\CLIPPER5\OBJ SET BIN=C:\CLIPPER5\BIN SET INCLUDE=C:\CLIPPER5\INCLUDE SET PATH=%PATH%;C:\CLIPPER5\BIN
Outra forma de incluir variáveis de ambiente no Windows 2000/XP/NT (principalmente se o Windows não puxou estas variáveis de ambiente do AUTOEXEC.BAT), é seguir os seguintes passos:
INICIAR ➡️ PAINEL DE CONTROLE ➡️ SISTEMA ➡️ AVANÇADO ➡️ VARIÁVEIS DE AMBIENTE
Clique no menu "Iniciar", depois em "Painel de Controle". Escolha então "Sistema".
Na janela que abrir, clique na aba "Avançado" e depois no botão "Variáveis de Ambiente".
Na próxima tela, clique no botão "Nova" do quadro "Variáveis do sistema".
Coloque o nome da variável no primeiro campo e o valor no segundo.
Para testar se conseguiu configurar as variáveis de ambiente, use o comando SET no prompt do DOS.
Talvez você precise dar uma pausa para enxergar tudo, então use: SET |MORE ou então mande a saída do comando para um arquivo e abra com o Edit ou Notepad, use o parâmetro ">nome do arquivo" com o comando, assim: SET >AMBI.TXT, depois é só abrir o arquivo criado AMBI.TXT e ver todas as variáveis de ambiente criadas. Talvez você queira mandar esse arquivo para um amigo ou postá-la num fórum para mostrar como está seu ambiente e pedir ajuda.
Naquele mesmo diretório, abra o CONFIG.NT e inclua o seguinte comando:
FILES=225 BUFFERS=80 STACKS=9,256
Reinicie a máquina para que as configurações tenham efeito.
Ambiente para cada versão do Clipper
Dependendo da versão do Clipper que você esteja utilizando, os parâmetros da variável CLIPPER deverão ser precedidos de ponto e vírgula (;) ou barras duplas (//).
Exemplo para o Clipper v.5.2e:
SET CLIPPER=//F:225 //DYNF:8 //SWAPK:65535 //SWAPPATH:"C:\TEMP" //TEMPPATH:"C:\TEMP"
Exemplo para o Clipper v.5.0a:
SET CLIPPER=F225;DYNF:8;SWAPK:65535;SWAPPATH:"C:\TEMP"
➡️ Para maiores informações, consulte o Norton Guide (NG) em:
OPTIONS ➡️ DATABASE ➡️ CA-Clipper 5.2 ➡️ Utilities ➡️ VIEW ➡️ ENVIRONMENT ➡️ SET CLIPPER
Ou
OPTIONS ➡️ DATABASE ➡️ Clipper 5.00a ➡️ Utilitários ➡️ CLIPPER ➡️ AMBIENTE ➡️ SET CLIPPER
TELA COM 25 LINHAS NO WINDOWS XP
"Janela x tela inteira: rode o seu programa, que vai aparecer em uma janela, certo? Clique nele com o botão direito do mouse (na barra de tarefas) e vá em "padrões". Altere para 80 x 25 tanto o tamanho do buffer da tela quanto o tamanho da janela. Pronto. da próxima vez, o seu prg vai abrir em tela inteira! Independente disso, você pode alternar entre janela e tela inteira teclando ALT ENTER...". Por Eolo Ventura.
O compilador Clipper é 16bits, portanto não vai rodar no Windows 64bits.
Use o VirtualBox para instalar um sistema de 32bits ou o vDOSplus para trabalhar com o Clipper.
DOSBOX é uma emulador MS-DOS mais voltado para jogos! O vDOSplus é mais indicado para Clipper.
No windows 11 quando a gente pressiona a tecla Windows+Pause/Break é tudo muito diferente, mas as propriedades do sistema se encontra abaixo das especificações do dispositivo em "Links relacionados" é só clicar em "Configurações avançadas do sistema" que daí já vai aparecer aquela janelinha conhecida.
Outra forma é executar "sysdm.cpl" que também vai chamar aquela janelinha já conhecida das propriedades do sistema (system properties). Se está perdido com isso, clique na lupa da barra de tarefas ou pressione as teclas Windows+R então digite "sysdm.cpl" e abrir.
Daí você já sabe, aba "Avançado" (advanced) e lá embaixo "Variáveis de ambiente" (Environment Variables).
Pode ser que você não queira instalar uma plataforma de 32bits só por causa do Clipper, então veja a dica em Clipper no Windows 64Bits.
Coloque os zeros antes do número automaticamente, ainda dentro do GET.
Para ficar bem claro, será mostrado duas rotinas equânimes a seguir.
Uma rotina normalmente usada seria assim:
WCOD := 0 @ 10,10 SAY "CODIGO:" GET WCOD PICT "999999" //Outros GETs READ WCOD := STRZERO(WCOD,6)
A partir de agora você fará o seguinte*:
WCOD := 0 @ 10,10 SAY "CODIGO:" GET WCOD PICT "999999" VALID EVAL( { || WCOD := STRZERO(WCOD,6), .T.} ) //Outros GETs READ
Gostou?!
*Testado no Clipper 5.01 e 5.2e; xHarbour 1.2.1 + Hbmake 1.20.
Saiba como ordenar qualquer vetor ou matriz com o Clipper!
Acredito que a forma mais comezinha para este tema seja através do primeiro preceito da lógica: a observação. Então observe:
Indexação de um array multidimensional (matriz)
Digamos que tivéssemos a seguinte matriz de 3 dimensões (matriz de 3 colunas):
aTST := { { "ANDERSON", "PROGRAMADOR", 23 },; { "LILIAN", "UNIVERSITÁRIA", 22 },; { "ALADIAH", "MILITAR", 59 } }
Se você quisesse indexar esta matriz por idade em ordem crescente:
aTST := aSORT( aTST,,,{|X,Y| X[3] < Y[3] } )
Por idade em ordem decrescente:
aTST := aSORT( aTST,,,{|X,Y| X[3] > Y[3] } )
Por profissão em ordem crescente:
aTST := aSORT( aTST,,,{|X,Y| X[2] < Y[2] } )
Por profissão em ordem decrescente:
aTST := aSORT( aTST,,,{|X,Y| X[2] > Y[2] } )
Por nome em ordem crescente:
aTST := aSORT( aTST,,,{|X,Y| X[1] < Y[1] } )
Por nome em ordem decrescente:
aTST := aSORT( aTST,,,{|X,Y| X[1] > Y[1] } )
Ok?! Vamos adiante!
Indexação de um array unidimensional (vetor)
Digamos que tivéssemos o seguinte vetor (matriz de 1 só coluna):
aTST2 := { "01002 11/10/99 REFIL P/ IMPRESS HP 35.00",; "01000 10/11/99 CX. DISQ. NASHUA 8.00",; "00101 01/07/99 PENTE 32MB SDRAM 188.00"}
Se você quisesse indexar por ordem de pedido crescente você já sabe! Normal:
aTST2 := aSORT( aTST2 )
Mas e por ordem decrescente do pedido?
aTST2 := aSORT( aTST2,,,{|X,Y| X > Y } )
E se você quisesse por data??? Em ordem crescente??? Nesse caso aí que é uma stringo só?
aTST2 := aSORT( aTST2,,,{|X,Y| CTOD(SUBSTR(X,7,8)) < CTOD(SUBSTR(Y,7,8)) } )
E por ordem decrescente???
aTST2 := aSORT( aTST2,,,{|X,Y| CTOD(SUBSTR(X,7,8)) > CTOD(SUBSTR(Y,7,8)) } )
Por nome do produto em ordem crescente?
aTST2 := aSORT( aTST2,,,{|X,Y| SUBSTR(X,17,20) < SUBSTR(Y,17,20) } )
Por nome do produto em ordem decrescente?
aTST2 := aSORT( aTST2,,,{|X,Y| SUBSTR(X,17,20) > SUBSTR(Y,17,20) } )
Por preço em ordem crescente?
aTST2 := aSORT( aTST2,,,{|X,Y| VAL(SUBSTR(X,36,7)) < VAL(SUBSTR(Y,36,7)) } )
Por preço em ordem decrescente?
aTST2 := aSORT( aTST2,,,{|X,Y| VAL(SUBSTR(X,36,7)) > VAL(SUBSTR(Y,36,7)) } )
Estes exemplos foram dados por mera ilustração. Desculpe se eu fui redundante demais para você, mas tem que ser assim mesmo... Por analogia você poderá indexar qualquer 'array' de qualquer forma que quiser!!!
DICAS DE LINKS
Usar nomes de arquivos extensos do Windows (em inglês)
http://www.engwall.com/clipper/lfnlib.htm
Link da Computer Associates para Patches and Updates do Clipper:
http://support.cai.com/Download/patches/ca-clipper/clip-patchmenu.html
Link da Coletânia de Clipper da PC Magazine
http://shareware.pcmag.com/category.php[id]45[SiteID]pcmag
The Oasis Clipper source - A maior coletânea de Clipper que existe!
>>> Clipper On Line <<< - Site Clipper On Line onde você encontra tudo sobre Clipper/Harbour.
Grupo Vagucs
The SourceSite - Clipper (vários downloads)
http://www.karland.com/code/clipper/
Código Livre
ORACLE e outros Database Servers
Já existe driver (RDD) para aplicativos em Clipper rodar, sem traumas, um banco de dados em Oracle e outros Database Servers.
Os Database Servers fazem que as informações sejam todas processadas no servidor sem enviar as informações aos computadores da rede. Desta forma, conseguem velocidade e consistência incomparáveis. Muito difícil ter problemas com arquivos de índice assim. É ideal para sistemas com 20 ou mais computadores em rede.
É gratuito: MySQL até 100 usuários com o Projeto Harbour / xHarbour. Em breve estaremos publicando os detalhes em Dicas > xHarbour.
Como proteger seu sistema contra descompilação
Na sua procedure ERRORSYS.PRG, escreva o seguinte:
Procedure ERRORSYS
Private ErrorSys
ErrorSys := 9876543210
Quando o descompilador encontra esse valor para ErrorSys, recusa a descompilação.
O problema é depois você perder os fontes e não conseguir mais recuperar...
O "Valkyrie" não consegue descompilar rotinas "alheias" (em linguagem C, por exemplo), mas o restante em Clipper rotineiro. O "Unclip" também a mesma coisa.
Se você usar o RTLINK para poder criar primeiramente arquivos prelinkados com extensão .PLT e .PLL ; depois a partir destes dois, cria-se um terceiro .EXE, que não é um executável normal tipo Clipper, e sim um pequeno programa que carrega seu arquivo .PLL na memória para ser executado. Funciona para pequenos e grandes programas com qualquer tipo de overlays. O "Valkirie" não reconhece e não disassembla e o "Rescue" idem.
Tem uma biblioteca do GAS4 que não deixa o Valkyrie descompilar, a BRWFUNC.
Em anexo disponibilizamos algumas ferramentas que são gratuitas ou shareware.
Este problema é muito comum. No Clipper, as modificações do banco de dados são feitos no cliente e depois enviados ao servidor... se há um pique de luz, um travamento, ou outro bug qualquer no cliente, o índice se quebra.
Primeiro lugar você deve ter certeza de que em todo programa que você grava ou altera dados você abre todos os arquivos de índice que o DBF possui, mesmo os índices que você não utilizará no programa. Utilizar bolsa de índices (bag) disponíveis em alguns RDD como o DBFCDX é util porque todos os indices sempre são abertos automaticamente.
Uma forma de evitar um pouco esses problemas é usar sempre o DBCOMMIT() para que as modificações não fique localmente no cache dando bobeira e sim seja gravado logo no servidor... Chama-se flush (descarga) no disco.
Nunca crie uma chave do tipo alltrim(nome)+codigo, pois na estrutura no arquivo de indice há um registro que define o tamanho da sua chave, se você criar uma chave com tamanho variável o resultado será sempre um arquivo corrompido!
Você deve verificar as instalações dos computadores, veja se todos têm estabilizadores, aterramento adequado, etc. O servidor necessita ter um no-break! E caso o benefício do no-break possa se estender aos outros computadores provavelmente você não terá mais problemas com isso... (todos precisariam terminar rapidamente o trabalho antes que a energia acabasse, é claro).
A única forma de prevenir 100% contra quebra de índices é a instalação de um bom gerenciador de banco de dados, como o ADS (Advantage Data Server), o único embargo é o preço... +- R$ 10.000,00. Nem preciso dizer que só é viável p/ grandes empresas, não é?! No entanto, o resultado é espetacular! Aumento da velocidade da rede, da capacidade de armazenamento dos DBFs, segurança total dos arquivos de índice, etc. Isto porque um gerenciador de banco de dados faz com que a gravação/edição das informação seja realizada diretamente no servidor ao invés de trazê-las para o terminal que você está e depois devolver. Temos diversos gerenciadores de banco de dados no mercado.
Se após estas observações o problema ainda persiste, vá à seção de Know-How e procure o tema "Consistência dos Arquivos de Índice" que fala sobre como manter a integridade do banco de dados na programação de seu sistema.
Use um gerenciador de banco de dados. Temos o LetoDBF gratuito hoje em dia para o Harbour.
Confira estas dicas do Itamar M. Lins Jr.:
1º Evitar usar Win7/10 como servidor. Use LINUX! ou Windows Server!
2º Usar Nobreaks
3º Não usar mapeamento.
4º Verificar o cabeamento de todos os micros.
5º Não se instala Antivírus no servidor!
6º Se usar windows, desligar atualizações. Pq ele reinicia o sistema sem avisos(atualizações), danificando o DBF!
7º Usar as novas ferramentas para acessar DBF em REDE! No mínimo fazer uso do NetIO, e ou usar LetoDBf ou ADS.
8º Se não deseja atualizar o seu código, acessar via "Terminal Service" o sistema.
9º Deixar o servidor "DEDICADO".(Ninguém mexe)
Seguindo esses parâmetros diminuímos a quase zero o problema de índices corrompidos.
TECLADO BRASILEIRO ABNT2 (c/ cedilha)
Para configurar o seu teclado brasileiro padrão ABNT2 com cedilha e outros acentos, você precisa configurar alguns comandos externos do MS-DOS que são carregados no CONFIG.SYS e no AUTOEXEC.BAT. Veja a seguir:
1. No CONFIG.SYS:
DEVICEHIGH=C:\WINDOWS\COMMAND\DISPLAY.SYS CON=(EGA,,1)
2. No AUTOEXEC.BAT:
MODE CON CODEPAGE PREPARE=((850) C:\WINDOWS\COMMAND\EGA.CPI) MODE CON CODEPAGE SELECT=850 LH KEYB BR,,C:\WINDOWS\COMMAND\KEYBRD2.SYS /ID:275
No Windows XP:
PAINEL DE CONTROLE > DATA, HORA, IDIOMA E OPÇÕES REGIONAIS > OPÇÕES REGIONAIS E DE IDIOMA > ABA IDIOMAS > BOTÃO "DETALHES" > CONFIGURAÇÕES: "Português (Brasil) - Português (Brasil - ABNT2)".