如何使用IdTCPServer或IdTCPClient获得当前带宽速度?
我想知道,客户端从服务器下载数据的速度有多快?
例如:下载速度:450 kbps
我正在尝试通过PHP套接字发送和接收数据.
Evrything还可以,但是当我试图发送数据时,PHP不会发送任何内容(Wireshark告诉我发送的数据长度为0).
我正在使用此代码:
<?php
$address = 'example.com';
$port = 1234;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$sockconnect = socket_connect($sock, $address, $port);
$c = 0;
do {
$c++;
$msg = '<test>Xml data</test>';
socket_write($sock, $msg, strlen($msg));
echo socket_read($sock, 1024 * 100, PHP_NORMAL_READ);
} while ($c < 3);
socket_close($sock);
Run Code Online (Sandbox Code Playgroud)
谁能帮我?感谢您阅读我的问题.
我正在跑Lazarus 0.9.30.
我TStringGrid在表单上有一个标准,并希望在将鼠标指针移动到列标题上时显示不同的提示.我正在使用此代码执行此操作并且它有点工作但是您经常需要单击单元格以获取提示更改,当我实际希望它在鼠标指针移动时更改.我将所有提示存储在我使用列索引作为键搜索的集合中.有没有办法更顺畅地显示提示?
procedure TTmMainForm.SgScoutLinkMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
R, C: Integer;
begin
R := 0;
C := 0;
SgScoutLink.MouseToCell(X, Y, C, R);
with SgScoutLink do
begin
if (R = 0) then
if ((C >= 3) and (C <= 20)) then
begin
SgScoutLink.Hint := FManager.ScoutLinkColumnTitles.stGetColumnTitleHint(C-3);
SgScoutLink.ShowHint:= True;
end; {if}
end; {with}
end;
Run Code Online (Sandbox Code Playgroud) 如何创建一个TComboBox,其中有两列隐藏了其中一列,以便它可以保存id值以及其中的实际项目?然后如何以编程方式获得该id值?
Embarcadero的TTaskbar有内存泄漏.由于我在表单上删除了此控件,因此每次关闭应用程序时,FastMM都会报告泄漏.
我尝试使用以下代码将FastMM静音:
procedure TMainForm.FormCreate(Sender: TObject);
begin
fastmm4.RegisterExpectedMemoryLeak(Taskbar);
end;
Run Code Online (Sandbox Code Playgroud)
但它不会起作用.如何注册此泄漏?
内存块已泄露.大小是:100
该块由线程0xC64分配,当时的堆栈跟踪(返回地址)为:406A52 409A7B 409CAC 4283A0
[System.SysUtils] [System] [System.SysUtils.FmtStr] 409CC6 40D775 7628A65F
[StretchDIBits的未知功能] 7731594E
[RtlpNtMakeTemporaryKey上的
未知函数] 7731594E
[ RtlpNtMakeTemporaryKey上的未知函数] 773168F8
[ RtlpNtMakeTemporaryKey上的未知函数] 773168DC [ RtlpNtMakeTemporaryKey上的未知函数]该块当前用于类的对象:UnicodeString
分配编号为:2209内存块已泄露.大小是:36
该块由线程0xC64分配,当时的堆栈跟踪(返回地址)为:406A52 407D43 40846A 42CD40
[System.SysUtils] [System] [System.SysUtils.Exception.CreateFmt] 5DEDD7
[System.Win.TaskbarCore] [System.Win] [System.Win.TaskbarCore.TTaskbarBase.UpdateTab] 610F00
[Vcl.Taskbar] [Vcl] [Vcl.Taskbar.CheckMDI] 5DF39F
[System.Win.TaskbarCore] [System.Win] [System.Win. TaskbarCore.TTaskbarBase.ApplyTabsChanges] 610DB8
[Vcl.Taskbar] [Vcl] [Vcl.Taskbar.TCustomTaskbar.Initialize] 5EB044
[Vcl.Forms] [Vcl] [Vcl.Forms.TApplication.Run] 62573A
[MinimalTemplate.dpr] [MinimalTemplate ] [MinimalTemplate.MinimalTemplate] [26]该块当前用于类的对象:ETaskbarException
分配编号为:2207此应用程序已泄露内存.小块泄漏(不包括指针注册的预期泄漏):
21 - 36字节:ETaskbarException x 1
85 - …
这是我的问题:我想创建一个记录类型,其中在变体记录的情况下,一些(但不是全部)将具有某个字段.根据维基,这是完全合法的.然而,当我尝试编译以下代码时:
program example;
{$mode objfpc}{$H+}
uses sysutils;
type
maritalStates = (single, married, widowed, divorced);
TPerson = record
name: record
first, middle, last: string;
end;
sex: (male, female);
dob: TDateTime;
case maritalStatus: maritalStates of
single: ( );
married, widowed: (marriageDate: TDateTime);
divorced: (marriageDate, divorceDate: TDateTime;
isFirstDivorce: boolean)
end;
var
ExPerson: TPerson;
begin
ExPerson.name.first := 'John';
ExPerson.name.middle := 'Bob';
ExPerson.name.last := 'Smith';
ExPerson.sex := male;
ExPerson.dob := StrToDate('05/05/1990');
ExPerson.maritalStatus := married;
ExPerson.marriageDate := StrToDate('04/01/2015');
end.
Run Code Online (Sandbox Code Playgroud)
编译失败,出现以下错误:
$ fpc ex.pas
Free …Run Code Online (Sandbox Code Playgroud) 我有代码接收服务器端之前已定义的特定区域,并在客户端的Form上创建一个漏洞.而不是这个,我想得到这个相同区域的屏幕截图,但没有在最终结果中显示我的表格,就像正常的桌面捕捉,但在这种情况下将只捕获,这个小区域.
那么,我如何调整下面的代码呢?
procedure TForm1.CS1Read(Sender: TObject; Socket: TCustomWinSocket);
var
X1, X2, Y1, Y2: Integer;
List: TStrings;
FormRegion, HoleRegion: HRGN;
StrCommand: String;
begin
StrCommand := Socket.ReceiveText;
if Pos('§', StrCommand) > 0 then
begin
List := TStringList.Create;
try
FormRegion := CreateRectRgn(0, 0, Form12.Width, Form12.Height);
ExtractStrings(['§'], [], PChar(StrCommand), List);
X1 := StrToIntDef(List[0], 0) - Form12.Left - 2;
Y1 := StrToIntDef(List[1], 0) - Form12.Top - 2;
X2 := StrToIntDef(List[2], 0) - Form12.Left - 2;
Y2 := StrToIntDef(List[3], 0) - Form12.Top - 2;
HoleRegion := CreateRectRgn(X1, …Run Code Online (Sandbox Code Playgroud) 我创建了两个单元并将第一个类放入其中一个:
unit UBaseClass;
interface
type
TBaseOuterClass = class
protected type
TBaseInnerClass = class
public
end;
protected
function GetInnerInstance: TBaseOuterClass.TBaseInnerClass; virtual;
end;
implementation
{ TBaseOuterClass }
function TBaseOuterClass.GetInnerInstance: TBaseOuterClass.TBaseInnerClass;
begin
// doesn't matter
end;
end.
Run Code Online (Sandbox Code Playgroud)
我将派生类放入第二个单元:
unit UDerClass;
interface
uses
UBaseClass;
type
TDerOuterClass = class(TBaseOuterClass)
protected type
TDerInnerClass = class(TBaseInnerClass)
end;
protected
function GetInnerInstance: TBaseOuterClass.TBaseInnerClass; override;
end;
implementation
{ TDerOuterClass }
function TDerOuterClass.GetInnerInstance: TBaseOuterClass.TBaseInnerClass;
begin
end;
end.
Run Code Online (Sandbox Code Playgroud)
当我正在尝试编译时,我得到了
[dcc32错误] UDerClass.pas(22):E2362无法访问受保护的符号TBaseOuterClass.TBaseInnerClass
在行函数TDerOuterClass.GetInnerInstance:TBaseOuterClass.TBaseInnerClass;
我无法理解为什么TBaseOuterClass.TBaseInnerClass(作为内部受保护类)无法从TDerOuterClass(为TBaseOuterClass派生)访问.在这种情况下,实际上受保护类型是什么?
我在嵌套类型声明主题中没有找到任何解释.那么这种行为有什么理由吗?
它也与简单的受保护类型相关
protected type
TSimpleType = Integer; …Run Code Online (Sandbox Code Playgroud) 我最近在新计算机上安装了Microsoft VS 2105 Professional(Update 3),我遇到了一种奇怪的行为.每当我尝试调试程序时,当我停止调试器时,它会尝试访问我的DVD驱动器,这既奇怪又烦人.除了我通常的日常项目之外,我尝试使用干净的"Hello World"风格的C++和C#项目,并且它仍然表现相同.
我已禁用诊断工具(工具 - >选项 - >调试 - >在调试时禁用启用诊断工具)并在安全模式下运行VS(devenv/SafeMode)但问题仍然存在.我使用"进程监视器"来识别触发访问DVD驱动器的程序,显然"StandardCollector.Service.exe"是罪魁祸首.您可以从下面的Process Monitor中找到日志(我删除了时间和PID列).我知道有一些报告的问题(内存)与这个特定的过程(StandardCollector.Service.exe),但为什么它试图创建/访问我的DVD驱动器上的文件对我来说是一个谜.我的操作系统是Windows 10家庭版.有人可以为这个问题建议任何诊断或解决方案吗?
这种行为仅在Visual Studio停止调试过程时发生,而不是任何其他程序(Windows在启动时也是如此,但我认为这很自然).我需要补充一点,如果我禁用然后从设备管理器启用DVD驱动器,问题就会消失(调试完成后无法访问DVD驱动器),但1-2分钟后会再次出现.
************************************来自过程监控的日志:
StandardCollector.Service.exe IRP_MJ_CREATE H:SUCCESS所需访问:通用读/写,Dis"Apple-tab-span"style ="white-space:pre;"> IRP_MJ_CREATE H:\ INVALID PARAMETER所需访问:Synchronize,Dis"Apple -tab-span"style ="white-space:pre;"> IRP_MJ_DEVICE_CONTROL H:FAST IO DISALLOWED控件:IOCTL_SCSI_PASS_THROUGH_DIRECT StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:SUCCESS控件:IOCTL_SCSI_PASS_THROUGH_DIRECT StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:FAST IO DISALLOWED控件: IOCTL_DISK_GET_DRIVE_GEOMETRY StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:NO媒体控制:IOCTL_DISK_GET_DRIVE_GEOMETRY StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:FAST IO不允许控制:IOCTL_STORAGE_QUERY_PROPERTY StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:SUCCESS控制:IOCTL_STORAGE_QUERY_PROPERTY StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:FAST IO DISALLOWED控件:IOCTL_CDROM_GET_CONFIGURATION StandardCollector.Servi ce.exe IRP_MJ_DEVICE_CONTROL H:SUCCESS控制:IOCTL_CDROM_GET_CONFIGURATION StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:FAST IO不允许控制:IOCTL_SCSI_PASS_THROUGH_DIRECT StandardCollector.Service.exe IRP_MJ_DEVICE_CONTROL H:SUCCESS控制:IOCTL_SCSI_PASS_THROUGH_DIRECT StandardCollector.Service.exe IRP_MJ_CLEANUP H:SUCCESS StandardCollector.Service.exe IRP_MJ_CLOSE H:成功
delphi ×6
android ×1
combobox ×1
delphi-7 ×1
delphi-xe6 ×1
fastmm ×1
freepascal ×1
ide ×1
indy ×1
lazarus ×1
leakcheck ×1
pascal ×1
php ×1
record ×1
rectangles ×1
screenshot ×1
sockets ×1
themes ×1
tstringgrid ×1
variant ×1