パスカルに変換するには?


ペナルティー  2005-09-24 14:09:26  No: 17687  IP: 192.*.*.*

タイトルどうりですが、
C++Builderのソースを見ながら
パスカルに変換して動かそうとしています。

//----------------------------------------
void CGetID::GetId( char *gid )
{
  DWORD id0;
  char *id = gid;

  //  中略
  for (int i=0; i<4; i++){
    *id++ = (char)((id0 >> (i*8)) & 0xff);
  }
}
//----------------------------------------

これってパスカルではどうなるのでしょうか?
特に「*」について教えてください。

途中までなら・・

void CComCom::GetId( char *gid )
→procedure CComCom::GetId( gid: PChar );
でいいのかな?

char *id = gid;
→*id := gid^;

*id++ = (char)((id0 >> (i*8)) & 0xff);
→*id := *id + char(id0 shr (i * 8) and $ff);

う〜む、もう一息?
理解不能・・

編集 削除
a  2005-09-24 15:03:57  No: 17688  IP: 192.*.*.*

×→procedure CComCom::GetId( gid: PChar );
→procedure CComCom.GetId(gid: PChar);


*id++ =
を省略しないで  書いてみること
間違いにきずくはず。


id[i]で  i番目のchar型がとれるはず 
計算するには  byteなどに変換。


*id++ がしたいのなら
ポインターを数字としては扱わないので型変換。
integer を確保して 代入
addr  // @
integer()
を使えばできます
integer(@id)
でポインターアドレスを数字に変換

ポインターに戻すには
Ptr(integer(@id))

編集 削除