我是一名技校学生,目前正学习Delphi ,在学习实践中遇到一些问题。听网友说这儿的高手很多,待人热情,乐于助人,尤其关心我们这类新手的成长进步,故特来请教,恳请各位大侠伸出援助之手。我的问题如下:
问题1:如某Access表1中有字段落1,字段2,,其中字段1用来存放图片,类型设置为OLE对象,请问如下的语句用Delphi语句如何实现?
If  表1某一记录中没有存放图片即该记录中字段1值为空  then问题2:语句if not copyfile(getcurrentdir+'\long.mdb','a:\long.mdb') then  failure:=true;//复制程序所在目录下的数据库文件到盘进行数据库备份
在编译中不能通过,系统提示如下:
[Error] Unit5.pas(107): Incompatible types: 'String' and 'PAnsiChar'  //提示数据类型不一致
[Error] Unit5.pas(107): Not enough actual parameters
请问如何修改才能使系统编译通过?

解决方案 »

  1.   

    if not copyfile(pchar(getcurrentdir+'\long.mdb'),'a:\long.mdb') then
      

  2.   

    PChar()
    强制类型转换就OK了http://lysoft.7u7.net
      

  3.   

    问题1应该是在设计数据库时指定该字段的约束为允许空就可以了吧,至少SQL Server是这样的。
      

  4.   

    问题1:if 字段1=nil then ,,,,这样我试过,不行?
      

  5.   

    以下是图片导入部分的代码,支持任何数据库格式,支持BMP/JPG图片格式:user
      Jpeg;...procedure TMainForm.Button_saveClick(Sender: TObject);
    var
      MyJpeg: TJpegImage;
      MyBmp: TBitmap;
      MyGraphic: TGraphic;
      MyPic: TPicture;
      MyFilesTream: TFilesTream;
    begin
      MyJpeg := TJpegImage.Create;
      MyPic  := TPicture.Create;
      MyBmp  := TBitmap.Create;
      MyGraphic  := TGraphic.Create;
      if OpenImageEnDialog.Execute then
      begin
        if ExtractFileExt(MainForm.OpenImageEnDialog.FileName)='.bmp' then
        begin
          Table.Edit;
          MyPic.LoadFromFile(OpenImageEnDialog.FileName);
          MyFilesTream:=TFilesTream.Create(OpenImageEnDialog.FileName,fmOpenRead);
          if MyFilesTream.Size<1000000 then
          begin
            Table.FieldByName(ImageEnDBView.DataField).SetFieldType(ftGraphic);
            Table.FieldByName(ImageEnDBView.DataField).Assign(MyPic);
          end else
            MessageDlg('你选择的位图太大,'+'请选择大小 1M 以下的...', mtError, [mbOK], 0 );
          Table.Post;
          MyPic.Free;
          MyFilesTream.Free;
          MyGraphic.Free;
        end else
        begin
          Table.Edit;
          MyJpeg.LoadFromFile(OpenImageEnDialog.FileName);
          MyBmp.Assign(MyJpeg);
          if MyBmp.Width*MyBmp.Height<307200 then
          begin
            Table.FieldByName(ImageEnDBView.DataField).SetFieldType(ftGraphic);
            Table.FieldByName(ImageEnDBView.DataField).Assign(MyBmp);
          end else
            MessageDlg('你选择的图片太大,'+'请选择长宽 640*480 以下的...', mtError, [mbOK], 0 );
          Table.Post;
          MyJpeg.Free;
          MyBmp.Free;
          MyGraphic.Free;
        end;
      end;
      Button_save.Enabled:=False;
      Button_del.Enabled:=False;
    end;
      

  6.   

    if not copyfile(pchar(getcurrentdir+'\long.mdb'),'a:\long.mdb') then  failure:=true;//注意类型转换