procedure T.Openfile(pFileName:PChar);
var
  FileSize: LongWord;
  FileHandle, MapHandle: THandle;
  pp, p: pByte;
  pTemp: Pointer;
begin
  GetHeaderFromAFile(pFileName);
  FileHandle := FileOpen(pFileName,fmOpenReadWrite);
  FileSize:=FXLength*FYLength*FZLength*FDataType+cOffBytes;
  MapHandle := CreateFileMapping(FileHandle,nil,PAGE_READWRITE,0,FileSize,nil);
  CloseHandle(FileHandle);
  p := MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,FileSize);
  CloseHandle(MapHandle);
  if p=nil then
    begin
        exit;
    end;
  pPointer:=p;
  pp:=pPointer;
  inc(pp,cOffBytes);
  pTemp:=pp;
  pWord:=pTemp;//数据指针
  pFloat:=pTemp;//数据指针
end;

  pWord = pTemp;//数据指针
  pFloat = pTemp;//数据指针
好象這裡要做強制轉換的。新的C++規則:void *可以指向任何類型的指針,但反過來要通過強制轉換來確認。

這種  Pascal代碼沒必要轉成 C++ 的,BCB中可以編譯pas代碼,新增一個pas文件,將代碼放裡面就行了。
就算你轉成了C++,還是使用同樣的“函數接口”。如只為學習目的,針對某語法問題提問即可。