Página 1 de 1

Problemas ao rodar o programa no Windows

Enviado: 04 Nov 2006 19:47
por diogenes_varela
Olá, colegas!

Utilizo um programa que desenvolvi em Clipper 5.2 que roda bem no MS-DOS pelo Windows 98.

No XP (SP2) funciona bem, não trava, mas as cores ficam esmaecidas e os comandos de blink não funcionam (os avisos não piscam), só ficam com fundo diferente (desbotado).

Isso só acontece se configurar o atalho para abrir em "Tela inteira". Se optar por "Janela" e depois maximizar (alt+enter), funciona perfeitamente.

Alguém sabe que alteração poderei fazer para que funcione normalmente no Windows XP?

Enviado: 04 Nov 2006 19:59
por Stanis Luksys
Rapaz,

Eu posso te dizer o seguinte, eu não sei ao certo qual é realmente a solução, porém acredito que seja coisa de placa de vídeo.

Eu já constatei que o Windows XP não tem um comportamento estável em diferentes tipos de hardware, no que se refere a programas 16 bits.

Este problema já tive também e não consegui resolver, mas não acobtece em todos os PCs com XP não, geralmente nos chipsets SIS com video onboard com menos de 8 MB.

Pode ser uma conclusão precipitada, mas foi o que encontrei em comum onde tive este problema.

Só mais uma coisa, como tentativa, no PRG principal coloque:

SetMode( 25, 80 )

Tente também usar o drive VESA, e chame num bat antes do programa. Talvez funcione.

Falou.

Enviado: 05 Nov 2006 11:06
por diogenes_varela
Stanis Luksys escreveu:Rapaz,

Eu posso te dizer o seguinte, eu não sei ao certo qual é realmente a solução, porém acredito que seja coisa de placa de vídeo.

Eu já constatei que o Windows XP não tem um comportamento estável em diferentes tipos de hardware, no que se refere a programas 16 bits.

Este problema já tive também e não consegui resolver, mas não acobtece em todos os PCs com XP não, geralmente nos chipsets SIS com video onboard com menos de 8 MB.

Pode ser uma conclusão precipitada, mas foi o que encontrei em comum onde tive este problema.

Só mais uma coisa, como tentativa, no PRG principal coloque:

SetMode( 25, 80 )

Tente também usar o drive VESA, e chame num bat antes do programa. Talvez funcione.

Falou.
Testei a dica acima e o resultado foi o seguinte:

Com o comando para SETMODE(25,80) os comandos de blink, como por exemplo, SETCOLOR("gr+*/r") voltaram a funcionar, mas se o atalho for configurado para abrir em "Tela inteira", as cores ficam embaçadas, o que não acontece se for configurado para abrir em janela e depois mudar para tela inteira usando alt+enter

Tinha esquecido de mencionar, mas os comandos SET KEY também não são obedecidos.

Antes eu usava SETMODE(43,80) e ocorria (somente no XP) uma troca da página de códigos do MS-DOS e os caracteres com acento eram mostrados truncados. Em 25,80 isso não está mais acontecendo.

Brigadão pela atenção.

Enviado: 06 Nov 2006 09:50
por Everton
Olá Amigo

Não sei se vai resolver esse problema mas não custa tentar remova este programa que executa automático no reg do windows e teste

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run...HTpatch

qualquer coisa me avise

Enviado: 06 Nov 2006 11:01
por diogenes_varela
Everton escreveu:Olá Amigo

Não sei se vai resolver esse problema mas não custa tentar remova este programa que executa automático no reg do windows e teste

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run...HTpatch

qualquer coisa me avise

Valeu a intenção, mas infelizmente não existe o valor...

Enviado: 06 Nov 2006 15:04
por diogenes_varela
É o seguinte, colegas,

Acrescentei uma linha no programa:

RUN MODE CON CODEPAGE PREPARE=((850) C:\%SystemRoot%\system32\ega.cpi)
RUN MODE cols=80 lines=25

Agora, somente os caracteres maiúsculos acentuados estão saindo truncados.

Não consigo detectar onde está ocorrendo a troca de página de códigos não solicitada...

Enviado: 06 Nov 2006 17:58
por diogenes_varela
Estou começando a achar que o problema está mesmo na página de códido.

A página de código-padrão do Windows XP é usada em ANSI Win32 APIs para converter um caractere de ANSI para Unicode.

É nessa conversão que os caracteres ficam truncados. Nesse caso o problema seria somente o velho MS-DOS...

Enviado: 08 Nov 2006 08:39
por diogenes_varela
Alguém sabe informar se existe algum comando que possa ser digitado no prompt que maximize ou minimize janelas?

Enviado: 08 Nov 2006 16:55
por diogenes_varela
O problema incial de cores desbotadas e comandos de blinks que não piscavam já foi superado. Todas as cores, inclusive o cinza, estão OK.

Só restou a troca de alguns caracteres acentuados. Pesquisando sobre o assunto em outros fóruns encontrei o post abaixo, do moderador jqueiroz, que explica muito bem a configuração da página de códigos do MS-DOS e do Windows:
o que acontece é que o DOS e o Windows trabalham em Code Pages diferentes. Enquanto o DOS trabalha com os CP 437 (US), 850 e 860, o Windows usa o CP 1200 para o português e outras línguas latinas, isso quando não usa Unicode (código de 2 bytes).

Mas essa diferença só se aplica para os códigos acima de 127;
Só não consegui entender, apesar da boa explicação, como é que:

1. Inicializando o programa em Tela cheia, há a troca de caracteres;

2. Inicializando no modo Janela e, depois maximizando, usando Ctrl+Enter, todos os caracteres são exibidos perfeitamente.

Onde está o problema? Há uma troca de página de código em tela cheia que não acontece ao maximizar a janela? Como isso é possível?

Enviado: 08 Nov 2006 21:17
por diogenes_varela
Comunico e compartilho com os interessados que, foi difícil...
mas CONSEGUI!

1. Ao redimensionar a tela, o Windows XP alterava a página de código, de modo que caracteres com numeração ASCII acima de 127 eram transformados em "Box Characters", alterando portanto, os seguintes caracteres:

CHR(214) Í
CHR(228) õ

2. Inseri no PRG uma solicitação de alteração para CP (437) e outra em seguida retornando para CP (850)


Problema resolvido e o programa está rodando como nos bons tempos do MS-DOS...

Agradeço aos que ajudaram com sugestões.

Enviado: 08 Nov 2006 23:21
por rochinha
Amiguinho

Se não me engano a VisualLIB possuia uma função chamada VL850() que deveria ser colocada no primeiro .PRG para sanar este problema.

Voce já usava ele e mesmo assim dava peripaque?

Enviado: 09 Nov 2006 00:49
por Stanis Luksys
É verdade mesmo...

E na antiga Visual Lib eu me lembro que também tinha um lance de trocar alguns arquivos do Windows para que os caracteres aparecessem corretamente quando executados em modo Janela... Mas zuava todos os outros programas que não seu.... hehe

Mas... Que bom que conseguiu!

Eu tive também um problema com LLIBG, simplesmente tela preta com cursor piscando, em uns 3 ou 4 PCs já... Vai entender o XPeta! Este se alguem souber pode me falar que pago um guaraná! rsrs

Valeu!

Enviado: 09 Nov 2006 08:13
por diogenes_varela
rochinha escreveu:Amiguinho

Se não me engano a VisualLIB possuia uma função chamada VL850() que deveria ser colocada no primeiro .PRG para sanar este problema.

Voce já usava ele e mesmo assim dava peripaque?
Não, nem sabia dessa função. Vou procurar.