这个是DLL,编译好了,用程序调用后会出现
raised exception class EInvalidPointer with message 'Invalid pointer operation'.Process stopped. Use Step or Run to continue."的错误提示。然后程序自己关闭了,请看我这段循环有什么错误?
library GetImelist;
uses
  SysUtils,
  Forms,
  Classes;{$R *.res}
Function GetImelists:String;stdcall;
var
   i,sizearr  : integer;
   Ime :string;
begin
    sizearr := sizeof(Screen.Imes) ;    ime:='';
     for i :=  1 to (sizearr - 1)  do
       begin
         ime:=ime + Screen.Imes[i-1]   ;
       end;
   Result := ime;
end;
ExPorts
 GetImelists;begin
end.

解决方案 »

  1.   

    Function GetImelists:String;
    var
       i,sizearr  : integer;
       Ime :string;
    begin
        ime:='';
         for i :=  0 to screen.Imes.Count-1  do
           begin
             ime:=ime + Screen.Imes[i]   ;
           end;
       Result := ime;
    end;
      

  2.   

    写到dll中这样比较好Function GetImelists:pchar;
    var
       i,sizearr  : integer;
       Ime :string;
    begin
        ime:='';
         for i :=  0 to screen.Imes.Count-1  do
           begin
             ime:=ime +Screen.Imes[i];
           end;
       Result := pchar(ime);
    end;
      

  3.   

    谢谢 用yuqianyi1974 的pchar没问题了