调试 Delphi Firemonkey Indy TCP 服务器
Debugging Delphi Firemonkey Indy TCP Server
我有一个实现 TCP 服务器的 Delphi Firemonkey 应用程序。服务器未按预期打开端口。我可以看到表格打开,但 netstat 显示端口未打开。我现在正尝试通过放置日志消息来调试此问题。
问题是我以前从未使用过Firemonkey。我不确定在哪里可以看到日志消息。
我已经声明了一个日志服务。
LoggingService: IFMXLoggingService;
然后我初始化它
LoggingService := FMX.Platform.TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService;
然后我在函数中调用它 Tserver.Execute
以确保它被执行。
if Assigned(LoggingService) then
LoggingService.Log('TserverExecute !',[]);
我不确定在哪里可以得到输出。我检查了各种调试终端,似乎无法在任何地方找到输出字符串。如果有人能指出我做错了什么,那就太好了?
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform,
IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent, IdUDPBase, IdContext,
IdSocketHandle, IdUDPServer, FMX.Controls.Presentation, FMX.StdCtrls;
type
TForm1 = class(TForm)
TCPServer: TIdTCPServer;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TserverExecute(AContext: TIdContext);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
LoggingService: IFMXLoggingService;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
var
Binding : TIdSocketHandle;
begin
LoggingService := FMX.Platform.TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService;
TCPServer.DefaultPort := 16000;
TCPServer.Bindings.Clear;
Binding := TCPServer.Bindings.Add;
Binding.IP := '0.0.0.0';
Binding.Port := 16000;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
TCPServer.Active := True;
end;
procedure TForm1.TserverExecute(AContext: TIdContext);
var
C : String;
begin
C := AContext.Connection.Socket.ReadLn();
if Assigned(LoggingService) then
LoggingService.Log('TserverExecute !',[]);
if C = 'TESTSTRING' then
begin
AContext.Connection.Socket.Writeln('SENT');
end;
end;
end.
I am not sure where to expect the output.
IFMXLoggingService.Log()
的文档说:
Displays a message in the Event Log.
Event Log 是 IDE 本身内部的 window(查看 > 调试 Windows > 事件日志)。它显示应用程序在调试会话期间生成的日志消息。因此,您需要 运行 调试器中的 Firemonkey 应用才能查看来自 IFMXLoggingService
.
的日志消息
我有一个实现 TCP 服务器的 Delphi Firemonkey 应用程序。服务器未按预期打开端口。我可以看到表格打开,但 netstat 显示端口未打开。我现在正尝试通过放置日志消息来调试此问题。
问题是我以前从未使用过Firemonkey。我不确定在哪里可以看到日志消息。
我已经声明了一个日志服务。
LoggingService: IFMXLoggingService;
然后我初始化它
LoggingService := FMX.Platform.TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService;
然后我在函数中调用它 Tserver.Execute
以确保它被执行。
if Assigned(LoggingService) then
LoggingService.Log('TserverExecute !',[]);
我不确定在哪里可以得到输出。我检查了各种调试终端,似乎无法在任何地方找到输出字符串。如果有人能指出我做错了什么,那就太好了?
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform,
IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent, IdUDPBase, IdContext,
IdSocketHandle, IdUDPServer, FMX.Controls.Presentation, FMX.StdCtrls;
type
TForm1 = class(TForm)
TCPServer: TIdTCPServer;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TserverExecute(AContext: TIdContext);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
LoggingService: IFMXLoggingService;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
var
Binding : TIdSocketHandle;
begin
LoggingService := FMX.Platform.TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService;
TCPServer.DefaultPort := 16000;
TCPServer.Bindings.Clear;
Binding := TCPServer.Bindings.Add;
Binding.IP := '0.0.0.0';
Binding.Port := 16000;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
TCPServer.Active := True;
end;
procedure TForm1.TserverExecute(AContext: TIdContext);
var
C : String;
begin
C := AContext.Connection.Socket.ReadLn();
if Assigned(LoggingService) then
LoggingService.Log('TserverExecute !',[]);
if C = 'TESTSTRING' then
begin
AContext.Connection.Socket.Writeln('SENT');
end;
end;
end.
I am not sure where to expect the output.
IFMXLoggingService.Log()
的文档说:
Displays a message in the Event Log.
Event Log 是 IDE 本身内部的 window(查看 > 调试 Windows > 事件日志)。它显示应用程序在调试会话期间生成的日志消息。因此,您需要 运行 调试器中的 Firemonkey 应用才能查看来自 IFMXLoggingService
.