Ir para conteúdo
Fórum Script Brasil
  • 0

Algumas Lógicas Que Não Entendi Rs


Churc

Pergunta

Opa

Então tava passando um código de C++ pra Delphi, mas tem umas coisas que não

consigo interpretar ahuauha

exemplo

typedef struct _rt_IdeDInfo_
{
    BYTE IDEExists[4];
    BYTE DiskExists[8];
    WORD DisksRawInfo[8*256];
} rt_IdeDInfo, *pt_IdeDInfo;

...

for (i=0; i<8; i++)
{
  if((pOutBufVxD->DiskExists[i]) && (pOutBufVxD->IDEExists[i/2]))
  {
    DWORD diskinfo [256];
    for (int j = 0; j < 256; j++) 
    diskinfo [j] = pOutBufVxD -> DisksRawInfo [i * 256 + j];
    done = TRUE;
  }
}
Bom nesta parte if((pOutBufVxD->DiskExists) && (pOutBufVxD->IDEExists[i/2])) Qual a lógica, tipo, no Delphi eu preciso expressar como um Boolean tipo if((pOutBufVxD->DiskExists > 0) && (pOutBufVxD->IDEExists[i/2] > 0)) algo assim mas não posso colocar isso que não entendi qual a lógica "True" disso rs Meu código em Delphi ficou
type
  _TAG_rt_IdeDInfo_ = record
    IDEExists: array [0..4] of Byte;
    DiskExists: array [0..8] of Byte;
    DisksRawInfo: array [0..2048] of WORD;
  end;
  rt_IdeDInfo = _TAG_rt_IdeDInfo_;
  Pt_IdeDInfo = ^rt_IdeDInfo;

...

for i := 0 to 8 do
begin
  if((pOutBufVxD.DiskExists[i]) and (pOutBufVxD.IDEExists[i div 2])) then
  begin
    for j := 0 to SizeOf(diskinfo) do
    diskinfo[j] := pOutBufVxD.DisksRawInfo[i * 256 + j];
    Result := True;
  end;
end;

Mass naquela parte que falei realmente eu preciso saber a lógica daquilo, o compilador

pede pra mim expressar um Boolean ali uhaeuhae

qualquer ajuda é bem vinda :D

abração

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
for i := 0 to 8 do
begin
  if((pOutBufVxD.DiskExists[i]) and (pOutBufVxD.IDEExists[i div 2])) then
  begin
    for j := 0 to SizeOf(diskinfo) do
    diskinfo[j] := pOutBufVxD.DisksRawInfo[i * 256 + j];
    Result := True;
  end;
end;
Mass naquela parte que falei realmente eu preciso saber a lógica daquilo, o compilador pede pra mim expressar um Boolean ali
desde que DiskExists armazena o tipo byte, seria interessante verificar exatamente o que é armazenado nele. Imagino que seja 0 (false) ou 1 (true). Se for isto então é só fazer o type-cast:
if(Boolean(pOutBufVxD.DiskExists[i]) and (pOutBufVxD.IDEExists[i div 2])) then

seria isso?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...