在网上看到一个发布的dll,可以把文字转换成拼音、五笔码、繁体等。感觉挺实用,作者的介绍只有VB下如何使用,我照着前面的相关贴子用delphi做了,编译通过,执行中错误,不知道为啥。发上来望老鸟帮着解决一下。
作者介绍如下:接口说明:
CHS2PY()
chrString:要转换的字符串
sType:返回值类型(PYFull 返加全拼,PYFirst 返回拼音码(默认))
Separator:每个字间的分隔符(默认值为空)
示例(VB6):DIM oPYWB AS NEW WChsToPYWBC.PYWBC
DIM oStr as string
oStr = "我们都是中国人"
PRINT oPYWB.CHS2PY(oStr,PYFull)  '-- 转换成拼音(即全拼音)
----------------------
以下是我的程序中的调用,请问哪儿错了?多谢大家,小弟在学习中,望支持。
unit ChToMemo;interface
..
type
..  
private
 { Private declarations }
  public
 { Public declarations }
  end;
  TChs2PY=function(Chrstring:string;SType:string):string;//这里声明
  var
..
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
PFunc:TFarProc;
Moudle:THandle;
begin
   Moudle:=LoadLibrary('WChsToPYWBC.dll');
   if Moudle>32 then
   Pfunc:=GetProcAddress(Moudle,'Chs2PY');
   edit1.Text:=TChs2PY(pFunc)(edit1.Text,'PYFULL');
   Freelibrary(moudle);
end;
end.

解决方案 »

  1.   

    换成静态试下
    implementation
    funciton CHS2PY:string;stdcall; external 'XXX.DLL';
    然后后面直接调用
      

  2.   

    unit ChToMemo;interface
    ..
    type
    ..  
    private
     { Private declarations }
      public
     { Public declarations }
      end;
      TChs2PY=function(Chrstring:string;SType:string):string;//这里声明
      var
    ..
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
    PFunc:TChs2PY;
    Moudle:THandle;
    begin
       Moudle:=LoadLibrary('WChsToPYWBC.dll');
       if Moudle>32 then
       @Pfunc:=GetProcAddress(Moudle,'Chs2PY');
       edit1.Text:=pFunc(edit1.Text,'PYFULL');
       Freelibrary(moudle);
    end;
    end.
      

  3.   

    TChs2PY = function(ChrString, SType: string): string; stdcall;
    stdcall 试试。
    另,建议楼主编码不要采用自由式。