Diretiva de Compilação

Delphi

02/05/2007

Ola Pessoal Existe alguma diretiva de compilação para identificar a versão do sistema Operacional??

vlw


Fernando Piccini

Fernando Piccini

Curtidas 0

Respostas

Massuda

Massuda

02/05/2007

Não existe tal diretiva; se existisse, ela só funcionaria em tempo de compilação, o que provavelmente não é o que você deseja.

Talvez :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=60337]este tópico[/url] seja útil para você.


GOSTEI 0
Fernando Piccini

Fernando Piccini

02/05/2007

Ola Massuda,

Sei q somente com uma funtion conseguiria retornar a versão do sistema operacional, porém tenho q carregar um arquivo de recuros ´.res´ somente se a versão do windows for diferente do Windows 98....
Ou seja abaixo, abaixo tenho um trecho de meu programa onde quero q carregue o arquivo ArqTeste.res somente se for diferente do Windows 98


...
[b:ad422620ed]
implementation

{$IFDEF ???} <-- Qual utilizar???

{$R ArqTeste.res}

{$ENDIF}[/b:ad422620ed]


Como posso tratar isso com uma diretiva ???


GOSTEI 0
Felipeaj

Felipeaj

02/05/2007

fernandopiccini, imagino que o que o Massuda tenha dito é que se existisse, a diretiva vai guardar a versão do SO do PC que compilou o sistema, não do que está rodando no momento


GOSTEI 0
Felipeaj

Felipeaj

02/05/2007

Nao li direito teu post, falei bobagem
Ignoras meu post!!


GOSTEI 0
Massuda

Massuda

02/05/2007

Como posso tratar isso com uma diretiva ???
Não pode. Como disse antes, se isso existisse, só funcionaria em tempo de compilação e, como disse o colega felipeaj, só serviria para dizer que a máquina onde o programa compilou era determinado Windows.

No seu caso, parece que você precisa determinar o tipo de Windows em tempo de execução. Explique melhor o que é esse resource/recurso que você quer usar dependendo da versão do Windows.


GOSTEI 0
Fernando Piccini

Fernando Piccini

02/05/2007

ok, vamos la...

O problema é que em máquinas com Win98 da problemas quanto tenta entrar meu sistema, pq ele tenta carregar um arquivo ´.res´...este arquivo contem algumas imagens q utilizo no meu programa, certo...

Ja q em tempo compilacao nao da, acredito q talvez tenha alguma forma entao de carregar este arquivo ´.res´ em tempo de execucao... ou seja, da mesma forma que deve-se carregar dlls, loadlibrary, certo...

mas qual a rotina e de que forma utilizar a mesma (caso exista) para carregar um arquivo ´.RES´ ???

vlw

Massuda / felipeaj pela atenção ai


GOSTEI 0
Massuda

Massuda

02/05/2007

Imaginando que voce precise de resources diferentes para Win(tendo)98 e WinNT/2K/XP, você vai ter que incluir os dois resources no seu programa (use nomes diferentes!) daí só precisa testar qual Windows está em uso e carregar a imagem do resource correto.


GOSTEI 0
Fernando Piccini

Fernando Piccini

02/05/2007

Tem alguma rotina de exemplo que carrega esse tipo de arquivo em tempo de execução?


GOSTEI 0
Massuda

Massuda

02/05/2007

Tem alguma rotina de exemplo que carrega esse tipo de arquivo em tempo de execução?
O arquivo RES não é carregado em tempo de execução, ele está embutido no programa e seu código decide qual imagem carregar.
... 
implementation 

{$R Arquivo1.res}  // Wintendo
{$R Arquivo2.res}  // Win NT/2K/XP/Vista

...
Nomeie as imagens dentro dos resources com nomes diferentes e carregue a imagem conforme o tipo de Windows.


GOSTEI 0
Fernando Piccini

Fernando Piccini

02/05/2007

Ola Massuda,

O problema é que o Win98 tenta armazenar memória para as imagens (Arquivo declarado na Diretiva {$R ...RES}) e não consegue. Consequentemente não consegue nem abrir meu executavel informando q nao tem mais memória.
Efetuei um teste onde retirei apenas a declaração da diretiva e rodou o executavel...

Mas consegui através de outra opção...ok...

Valeu pela força ai

:D


GOSTEI 0
POSTAR