Erro em Função
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;
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
Curtidas 0
Respostas
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
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
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
24/11/2005
não, eu não testei, mas já tive problema com parenteses, por isto comentei
GOSTEI 0
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