procedure是没有result
function才有

解决方案 »

  1.   

    啊?难道DELPHI帮助里面的SAMPLE有错误?
    var
      I: Integer;
    begin
      Result := 1.0;
      I := Y;
      while I > 0 do
      begin
        if Odd(I) then Result := Result * X;
        I := I div 2;
        X := Sqr(X);
      end;
      

  2.   

    估计是你的Result类型和你Function类型定义不一样。
      

  3.   

    我也同意,但是……我写的是一个用在ASP中CREATEOBJECT的组件……FUNCTION?我再看看……
      

  4.   

    我在SAMPLE里定义了一个TEST方法
    这里是部分源代码:
    unit Unit1;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      ComObj, ActiveX, AspTlb, Project2_TLB, StdVcl;type
      Tsample = class(TASPMTSObject, Isample)
      protected
        procedure test(var name: OleVariant); safecall;
      end;implementationuses ComServ;procedure Tsample.test(var name: OleVariant);
    begin
    Response.write (UTF8Encode(name));
    end;initialization
      TAutoObjectFactory.Create(ComServer, Tsample, Class_sample,
        ciMultiInstance, tmApartment);
    end.其实就是把NAME变成UTF编码……这样我在ASP中就可以这样调用:
    <% Set DelphiASPObj = Server.CreateObject("Project2.sample") 
    DelphiASPObj.test("测试")
    %>这样在显示出来的页面中将显示的是“测试”这两个字符的UTF编码。问题是:我不想调用对象方法就直接写出UTF编码的字符,我想在
    DelphiASPObj.test("测试")后所产生的是一个变量,然后我在ASP文件中用
    response.write 写出来。例如我希望这样:
    bianliang=DelphiASPObj.test("测试")
    然后我可以在其他地方引用 bianliang 我记得要返回这个值就要用:RESULT……但是具体怎么个情况??????我都快忘光了……快点回答!
      

  5.   

    其实解决的方法很简单我觉得以前我就是用result:=UTF8Encode(name); 
    这样就应该能返回值了,但是我又记得RESULT确实是不能在procedure中用……在FUNCTION中……怎么弄? 
      

  6.   

    这个就是很久不用DELPHI的弊端!!!!!!我有半年没有碰它了……呜…………帮帮我
      

  7.   

    你根本就没有在Tsample中定义函数,你只定义了方法,用type library定义指针参数,就不再是procedure,而是function了,后面的就看你自己了  
      

  8.   

    不过还是感谢licwing(行走人生),我现在致力于ISAPI以及组件方面的研究……希望有机会交流
      

  9.   

    可以啊,Kandy(济沧海),有空来聊吧