首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求翻译C++代码为Delphi(保存文件100分),该怎么解决

2013-01-25 
求翻译C++代码为Delphi(保存文件100分)void CDemoDlg::OnBnClickedBtnCapture(){int ret 0, nWidth 0,

求翻译C++代码为Delphi(保存文件100分)


void CDemoDlg::OnBnClickedBtnCapture()
{
int ret = 0, nWidth = 0, nHeight = 0;
unsigned char buffer[IDFP_IMG_WIDTH*IDFP_IMG_HEIGHT + 1078] = {0};

LIVESCAN_BeginCapture(0);
if((ret = LIVESCAN_GetFPBmpData(0, buffer)) > 0)
{
BITMAPFILEHEADER *bmpfheader = (BITMAPFILEHEADER *)buffer;
BITMAPINFO *bmpinfo = (BITMAPINFO *)(((char*)bmpfheader) + 14);
nWidth = bmpinfo->bmiHeader.biWidth;
nHeight = bmpinfo->bmiHeader.biHeight;
HBITMAP hb = BuildImage(buffer + 1078, bmpinfo->bmiHeader.biWidth, bmpinfo->bmiHeader.biHeight);

GetDlgItem(IDC_STATIC_IMAGE)->SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hb);
DeleteObject(hb);
hb = NULL;

SaveToFile("image.bmp", buffer, IDFP_IMG_WIDTH*IDFP_IMG_HEIGHT+1078);

SetDlgItemText(IDC_EDT_INFO, "采集图像成功");
}
else
{
LIVESCAN_GetErrorInfo(ret, pszErrorInfo);
str.Format("采集图像失败, %s", pszErrorInfo);
SetDlgItemText(IDC_EDT_INFO, str);
}
LIVESCAN_EndCapture(0);
}



首先是上面这个,怎么才能把一个PChar类型的值给一个image控件呢?

下面是我翻译的


procedure TForm1.btn1Click(Sender: TObject);
var
  i, ret, nWidth, nHeight: Integer;
  buffer: PAnsiChar;
  f: file;
  aa: TOFStruct;
  b: array of Byte;
  s: string;
  tf: TFileStream;
begin
  GetMem(buffer, IDFP_IMG_WIDTH * IDFP_IMG_HEIGHT + 1078);
  LIVESCAN_BeginCapture(0);
  ret := LIVESCAN_GetFPBmpData(0, buffer);
  if ret > 0 then
  begin
    try
      //到这里就翻译不下去了,尝试好多种方法,无能为力。这时候的buffer是有值的,打印出来可以。
    except
      on e: Exception do
      begin
        ShowMessage(e.Message);
      end;
    end;
    lst1.Items.Text := '采集图像成功!';
  end
  else
  begin
    LIVESCAN_GetErrorInfo(ret, pszErrorInfo);
    ShowMessage(pszErrorInfo);
  end;
end;



int SaveToFile(const char *fileName, void *buffer, int size)
{
FILE *f=fopen(fileName, "wb");
if(f==NULL)
{
printf("Open file %s to write fail.\n", fileName);
return 0;
}
fwrite(buffer, size, 1, f);
fclose(f);
return 1;
}


上面这小段代码是最重要的,我搞了好久了,翻译都不成功,不知道怎么把PChar类型保存为一个bmp文件,换了好多种方法和转变好多种类型都不会...

[解决办法]
你就把pchar当成string么。然后用流操作也可以

热点排行