问题是把TOpenPictureDialog打开的图片保存在EXE文件下的图片目录,然后以edit1的text的字符串命名后保存.
现在运行时遇到的错误,求bdmh老师帮解下.
[DCC Error] Unit1.pas(45): E2035 Not enough actual parameters
[DCC Error] Unit1.pas(45): E2018 Record, object or class type required
[DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'

unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtDlgs, ExtCtrls, jpeg, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Panel1: TPanel;
    Image1: TImage;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  MyPath:string;
  Pic:string;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
    if OpenPictureDialog1.Execute then
  begin
  pic := OpenPictureDialog1.FIlename;
  Image1.Picture.LoadFromFile(pic);
  end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  if directoryExists(myPath+'图片') then
    CopyFile('pic', 'myPath+'图片+'edit1.text+'.jpg', True);//问题就在这里
end;
end.

解决方案 »

  1.   

    加一个SavePictureDialog1,
    procedure TForm1.Button2Click(Sender: TObject);
    var 
      jpeg: Tjpegimage;
    begin
      SavePictureDialog1.Filter := 
        '*.jpg|*.jpg'; 
      if SavePictureDialog1.Execute then 
      begin 
            try 
                jpeg := Tjpegimage.Create;
                jpeg.Assign(image1.Picture.Bitmap); 
               jpeg.SaveToFile(ChangeFileExt(SavePictureDialog1.Filename, 
                  '.jpg')); 
              finally 
                jpeg.Free;
              end; 
       end;
    end;
      

  2.   

    加一个SavePictureDialog1,
    procedure TForm1.Button2Click(Sender: TObject);
    var 
      jpeg: Tjpegimage;
    begin
      SavePictureDialog1.Filter := 
        '*.jpg|*.jpg'; 
      if SavePictureDialog1.Execute then 
      begin 
            try 
                jpeg := Tjpegimage.Create;
                jpeg.Assign(image1.Picture.Bitmap); 
               jpeg.SaveToFile(ChangeFileExt(SavePictureDialog1.Filename, 
                  '.jpg')); 
              finally 
                jpeg.Free;
              end; 
       end;
    end;
      

  3.   


    CopyFile('pic', 'myPath+'图片+'edit1.text+'.jpg', True);//问题就在这里
    上面这就 话存在不少问题
    pic和maypath都是变量,为什么还要用引号呢
    "图片"二字,少个引号
    edit1.text为什么左侧有个引号,右侧没有呢修改如下试试CopyFile(PChar(pic), PChar(myPath+'图片\'+edit1.text+'.jpg'), True);
      

  4.   

    image1.Picture.SaveToFile('f:\'+edit1.Text+'.bmp');保存到F盘。
      

  5.   

    to bdmh老师,现在可以运行及编译,但不能把图片复制到目录中,是否语言有问题呢,请老师帮忙解下,不尽感谢!
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        if OpenPictureDialog1.Execute then
      begin
      pic := OpenPictureDialog1.FIlename;
      Image1.Picture.LoadFromFile(pic);
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      if directoryExists(myPath+'图片') then
        CopyFile('pic',pchar(myPath+'图片'+edit1.text+'.jpg'), True);
    end;
    end.
      

  7.   

    to starluck 老师,试了你给的代码后,还是不能复制保存图片在目录中,究竟是什么原因呢,思路是对的啊
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        if OpenPictureDialog1.Execute then
      begin
      pic := OpenPictureDialog1.FIlename;
      Image1.Picture.LoadFromFile(pic);
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      if length(Edit1.text) = 0 then begin 
         showMessage('please input pic file name');
         exit;
      end;  if not fileExists(pic) then begin 
        showMessage('can not Fount pic file');
        exit;
      end;
      
      if LastDelimiter('\',myPath) <> length(myPath) then mypath := myPath+'\';  if directoryExists(myPath+'图片') then
        CopyFile(pic,pchar(myPath+'图片\'+edit1.text+'.jpg'), True);
    end;
    end.
      

  9.   


    你的pic是变量,不是字符串,不能用引号呀
      

  10.   

    你跟踪一下
    看看
    pic及myPath+'图片\'+edit1.text+'.jpg'的值,是不是正确的,因为看不到pic和mypath的值,所以怀疑有可能这两个参数有问题,比如mypath后面是否有'\'
      

  11.   

    要考虑以下问题1.首先跟踪一下,CopyFile的两个路径参数的值,是否正确,确保其中的文件已经存在
    2.被复制的图片是否有只读属性,有则去掉
    3.目标文件是否被使用我想上面问题都确定之后,应该没有问题的,主要就是路径指向是否正确
      

  12.   

    运行出错提示了
    [DCC Error] Unit1.pas(57): E2010 Incompatible types: 'string' and 'PWideChar'
    [DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
      

  13.   

     Image1.Picture.SavetoFile("路径\\文件名");
      

  14.   

    思路没有问题,只要你保证路径正确,并且新文件不存在或者可以备覆盖就不应该有问题呀,
    CopyFile('pic', 'myPath+'图片+'edit1.text+'.jpg', True);
    把第三个参数改成false试试,那样就会覆盖已存在的文件,
      

  15.   


    procedure TForm1.Button1Click(Sender: TObject);
    begin
        if OpenPictureDialog1.Execute then
      begin
      pic := OpenPictureDialog1.FIlename;
      Image1.Picture.LoadFromFile(pic);
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      if length(Edit1.text) = 0 then begin 
         showMessage('please input pic file name');
         exit;
      end;  if not fileExists(pic) then begin 
        showMessage('can not Fount pic file');
        exit;
      end;
      
      if LastDelimiter('\',myPath) <> length(myPath) then mypath := myPath+'\';  if directoryExists(pWidechar(myPath+'图片')) then
        CopyFile(pic,pWidechar(myPath+'图片\'+edit1.text+'.jpg'), True);
    end;
    end.
    你的DELPHI是2009的?
      

  16.   

    to starluck老师:不错~是2009版的
      

  17.   

    CopyFile(pic,pWidechar(myPath+'图片\'+edit1.text+'.jpg'), True);{好像是这句的问题}
    还是不行
    [DCC Error] Unit1.pas(57): E2010 Incompatible types: 'string' and 'PWideChar'
    [DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
      

  18.   

    CopyFile(pic,pWidechar(myPath+'图片\'+edit1.text+'.jpg'), True);{好像是这句的问题}
    还是不行
    [DCC Error] Unit1.pas(57): E2010 Incompatible types: 'string' and 'PWideChar'
    [DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
      

  19.   

    CopyFile(PwideChar(pic),pWidechar(myPath+'图片\'+edit1.text+'.jpg'), True);{好像是这句的问题}這樣來做
      

  20.   

    image1.Picture.SaveToFile('f:\'+trim(edit1.Text)+'.bmp');
    保存到你需要的盘符就可以了。.我测试通过
      

  21.   

    看来是2009里面的string和pwidechar的转换问题了,这里帮你顶了。
      

  22.   

    {to starluck老师,现在能运行了.但还是搞不懂为什么图片不能被复制到目录中.
    PIC这个变量是对的,myPath+'图片这个路径也是对的啊,真汗.}
      

  23.   

     ShowMessage(pic); ShowMessage(myPath+'图片\'+edit1.text+'.jpg'); 
     這二個分別是什麼,你就明白了。
      

  24.   

    to starluck老师
    ShowMessage(pic);//这是:原图片的地址
    ShowMessage(myPath+'图片\'+edit1.text+'.jpg');//这是:图片\edit1.jpg 
    都没错哦,奇怪,不用变量直接用路径表示就可以复制.难道是变量的问题.
      

  25.   

    myPath+'图片'这个文件夹存在么?
      

  26.   

    ShowMessage(myPath+'图片\'+edit1.text+'.jpg');//这是:图片\edit1.jpg 
    都没错哦,奇怪,不用变量直接用路径表示就可以复制.难道是变量的问题.
    你用這個SHOW出來的地址,在資源管理器訪問這個地址,能訪問到嗎?? 盤符都沒有!!!不對
      

  27.   

    myPath是绝对路径还是相对路径?copy之前 DirectoryExists(myPath+'图片') 返回值是什么?