gpt4 book ai didi

delphi - Delphi XE2 TIdUDPClient ReceiveString重载不起作用

转载 作者:行者123 更新时间:2023-12-03 18:26:35 31 4
gpt4 key购买 nike

我正在使用Embarcadero RAD Studio XE2 Update 4及其附带的Indy软件包。

我的意图是在局域网中找到一个服务器,该服务器具有TIdUDPClient广播的广播,该服务器等待服务器的响应以获取其IP。如果我使用不带参数的TIdUDPClient方法ReceiveString,则接收数据的效果很好。

但是,当我尝试使用RAD Studio随附的Indy 10文档版本10.5.8.3中的重载版本时,它不会编译并显示'E2250:没有可以使用这些参数调用的'ReceiveString'重载版本' 。
这是我的代码:

unit Client;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPClient, Vcl.StdCtrls, IdGlobal;

type
TFormLC = class(TForm)
UDPClient: TIdUDPClient;
LServer: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
FormLC: TFormLC;

implementation

{$R *.dfm}

function findServer:string;
var ans, ip : string;
port: TIdPort;
begin
with FormLC.UDPClient do begin
Active := True;
BroadcastEnabled:=True;
Broadcast('ServerRequest', 1234);
ans := ReceiveString(ip, port);
Active := False;
end;
if SameText(ans, 'ServerAccept') then
result := ip
else
result := '';
end;


procedure TFormLC.Button1Click(Sender: TObject);
var ans:string;
begin
LServer.Caption := findServer;
end;

end.

我注意到Indy的 online documentation与IDE随附的文档有所不同,并按此处所述尝试了该文档,但没有成功。

任何帮助将是巨大的!

最佳答案

您的问题是由with语句引起的,您是将portTIdUDPClient属性而不是局部变量port传递给ReceiveString方法。

function findServer:string;
var ans, ip : string;
port: TIdPort;
begin
with FormLC.UDPClient do begin
....
ans := ReceiveString(ip, port);//here you are passing the port property
Active := False;
end;
....
end;

解决方法是将您的 port本地变量重命名为:
 function findServer:string;
var ans, ip : string;
vport: TIdPort;
begin
with FormLC.UDPClient do begin
....
ans := ReceiveString(ip, vport);//now will work
Active := False;
end;
end;

甚至最好不要使用 with语句。

关于delphi - Delphi XE2 TIdUDPClient ReceiveString重载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12791237/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com