Erro em Função

Delphi

24/11/2005

Achei a função abaixo para pegar dados da BIOS. Só que não consigo executá-la. Dá um erro na linha ´if p^ in [#33..126, 169, 184] then´. Alguém poderia me ajudar?

function GetBiosInfoAsText: string;
var
p, q: pchar;
begin
q := nil;
p := PChar(Ptr($FE000));
repeat
if q <> nil then begin
if not (p^ in [10, 13, 32..126, 169, 184]) then begin
if (p^ = 0) and (p - q >= 8) then begin
Result := Result + TrimRight(String(q)) + 1310;
end;
q := nil;
end;
end else
if p^ in [33..126, 169, 184] then
q := p;
inc(p);
until p > PChar(Ptr($FFFFF));
Result := TrimRight(Result);
end;


Valdirdill

Valdirdill

Curtidas 0

Respostas

Edilcimar

Edilcimar

24/11/2005

não veja erro, a não ser que seja algo do tipo
if (p^ in [#33..126, 169, 184]) then
que apesar de não ter lógica as vezes não funciona, faça um debug


GOSTEI 0
Valdirdill

Valdirdill

24/11/2005

não veja erro, a não ser que seja algo do tipo if (p^ in [#33..126, 169, 184]) then que apesar de não ter lógica as vezes não funciona, faça um debug


Você testou a function e funcionou? Qual Delphi?


GOSTEI 0
Edilcimar

Edilcimar

24/11/2005

não, eu não testei, mas já tive problema com parenteses, por isto comentei


GOSTEI 0
Massuda

Massuda

24/11/2005

Posso estar enganado, mas desde a chegada do Windows 95 esse tipo de código (que acessa diretamente uma posição de memória fora do programa) não funciona. No caso, acho que você está lendo uma posição qualquer de memória dentro do seu programa.


GOSTEI 0
POSTAR