Jump to content
Fórum Script Brasil
  • 0

Algumas Lógicas Que Não Entendi Rs


Churc
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

  • 0

poww grande Micheus :D

mais uma vez me ajudando bastante husaashu

ainda não testei mas certeza que é isso, pela lógica

valeu cara, precisar e eu puder ajudar pode contar comigo

abraçox

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...