TMethod用法

TMethod用法
 

OnClick是TNotifyEvent类型;
 
type   TNotifyEvent   =   procedure(Sender:   TObject)   of   object; 

就是说他是一个过程,而且是有一个TObject的参数,并且包含在一个对象里~~ 

关于类的方法:   (不是类方法,这里指object   pascal中的静态方法,相当于C++的成员函数) 
      1:   带有隐含参数   self 
      2:   方法是方法,数据是数据。 
      3:Delphi的方法是一个结构 
            type 
                TMethod   =   record 
                    Code:   Pointer;     //方法的入口地址 
                    Data:   Pointer;     //类实例指针(Self参数) 
                end; 
  
  我们调用类的方法,其实分为2个部分, 
      1:调用方法的代码,通过类来获得方法入口地址。 
      2:访问对象的数据(也可能不访问),通过类的方法的那个隐含参数Self来访问。

我做了一个测试: 
      TMyObject   =   class 
      private 
          FName:   string; 
      public 
          procedure   ChangeName(AName:   string); 
          procedure   ShowPrivate; 
      end; 
  
  procedure   TMyObject.ChangeName(AName:   string); 
  begin 
      FName   :=   AName;   //修改私有变量 
      ShowMessage('My   name   is   to   be   changed   to   '   +   AName); 
  end; 
  
  procedure   TMyObject.ShowPrivate; 
  begin 
      ShowMessage('My   name   is   '   +   FName); 
  end; 
  
  procedure   TForm1.Button1Click(Sender:   TObject); 
  type 
      TCallFun   =   procedure(AName:   string)   of   object; 
  var 
      E:   TMyObject; 
      M:   TMethod; 
  begin 
      E   :=   TMyObject.Create; 
      M.Code   :=   @TMyObject.ChangeName;   //这里设置要访问的方法的入口地址 
      M.Data   :=   @Pointer(E)^;       //设置Self参数,即类实例指针 @Pointer(E)^与Pointer(E)一样的
      TCallFun(M)('Xbl'); 
      E.ShowPrivate;     //My   name   is   Xbl 
      E.Free; 
  end; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在 Delphi 11 中调用 ChatGPT,你可以使用 OpenAI 的 API。为了使用 API,你需要注册 OpenAI 的开发者账户并获取 API 密钥。然后,你可以使用 Delphi 11 中的 REST 客户端组件来发送 API 请求和接收响应。 以下是一个使用 Delphi 11 中的 REST 客户端组件调用 OpenAI API 的示例代码: ```delphi uses System.Net.HttpClient, System.Net.URLClient, System.Net.HttpClientComponent; procedure CallOpenAIChatGPT(); var client: TNetHTTPClient; request: TNetHTTPRequest; response: IHTTPResponse; apiKey, prompt: string; begin apiKey := 'YOUR_API_KEY_HERE'; prompt := 'Hello, how are you?'; client := TNetHTTPClient.Create(nil); request := TNetHTTPRequest.Create(nil); try request.Client := client; request.Method := TNetHTTPRequest.TMethod.rmPOST; request.URL := 'https://api.openai.com/v1/engines/davinci-codex/completions'; request.Headers.Add('Content-Type', 'application/json'); request.Headers.Add('Authorization', 'Bearer ' + apiKey); request.Source := '{"prompt": "' + prompt + '", "max_tokens": 50, "temperature": 0.5, "n": 1, "stop": ["\n"]}'; response := request.Execute; if response.StatusCode = 200 then ShowMessage(response.ContentAsString) else ShowMessage('Error: ' + response.ContentAsString); finally client.Free; request.Free; end; end; ``` 在上面的示例代码中,我们使用了 Delphi 11 自带的 REST 客户端组件来发送 POST 请求,并在请求头中添加了 OpenAI 的 API 密钥。我们也指定了一些请求参数,例如激励器、最大 token 数、温度等等。在这个例子中,我们只请求一个回答,如果要请求多个回答,可以将 "n" 参数设置为需要的数量。 注意,这只是一个基本的示例代码,你需要根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值