2012-05-06 28 views
9

tôi cần phải xử lý một tập hợp các file bmp sử dụng một ứng dụng giao diện điều khiển, tôi đang sử dụng lớp TBitmap, nhưng mã không biên dịch vì lỗi nàyTBitmap.Create không làm việc trong giao diện điều khiển ứng dụng delphi

E2003 Undeclared identifier: 'Create' 

Ứng dụng mẫu này sao chép sự cố

{$APPTYPE CONSOLE} 

{$R *.res} 

uses 
System.SysUtils, 
Vcl.Graphics, 
WinApi.Windows; 

procedure CreateBitMap; 
Var 
    Bmp : TBitmap; 
    Flag : DWORD; 
begin 
    Bmp:=TBitmap.Create; //this line produce the error of compilation 
    try 
    //do something 
    finally 
    Bmp.Free; 
    end; 
end; 

begin 
    try 
    CreateBitMap; 

    except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
    end; 
end. 

tại sao mã này không biên dịch?

Trả lời

19

Vấn đề là theo thứ tự của khoản sử dụng của bạn, WinApi.Windows và Vcl.Graphics đơn vị có một loại gọi là TBitmap, khi trình biên dịch tìm một mơ hồ loại giải quyết các loại bằng cách sử dụng đơn vị cuối cùng của danh sách sử dụng nơi có mặt. trong trường hợp này sử dụng TBitmap của đơn vị của Windows mà chỉ vào cấu trúc WINAPI BITMAP, để giải quyết sự thay đổi này theo thứ tự của các đơn vị của bạn để

uses 
System.SysUtils, 
WinApi.Windows, 
Vcl.Graphics; 

hoặc bạn có thể khai báo kiểu sử dụng tên có trình độ đầy đủ như vậy

procedure CreateBitMap; 
Var 
    Bmp : Vcl.Graphics.TBitmap; 
    Flag : DWORD; 
begin 
    Bmp:=Vcl.Graphics.TBitmap.Create; 
    try 
    //do something 
    finally 
    Bmp.Free; 
    end; 
end; 
Các vấn đề liên quan