タイトルどうりですが、
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);
う〜む、もう一息?
理解不能・・
×→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))
ツイート | ![]() |