我在TIdTCPServer的OnExecute中有以下代码(随安装附带的Delphi 2009和Indy 10),这与本网站上的其他示例非常相似;
Socket := AContext.Connection.Socket;
if Socket.CheckForDataOnSource(10) then
begin
if not Socket.InputBufferIsEmpty then
begin
Socket.InputBuffer.ExtractToBytes(RawBytes, -1, False, -1);
SetLength(Buffer, Length(RawBytes));
Move(RawBytes[0], Buffer[1], Length(RawBytes));
// Do stuff with data here...
end;
end;
AContext.Connection.CheckForGracefulDisconnect;
Run Code Online (Sandbox Code Playgroud)
它有时不会读取数据,因为CheckForDataOnSource(10)返回False.但是,如果我在该行停止调试器,我可以看到我在InputBuffer的字节中发送的数据.是否还有其他任何我应该做的设置或其他方法来强制它一直工作.这段代码运行很多次但总是在CheckForDataOnSource(10)上失败.
另外作为旁注,我注意到Indy的代码周围有些人抓住了AContext.Connection.IOHandler而不是AContext.Connection.Socket并做了与上面的代码相同的事情,什么是"正确"的使用.
谢谢
布鲁斯
我有一个WCF服务侦听 Windows Service Registry中的动态分配端口.如何从另一个c#应用程序中找到此服务的侦听地址?或者至少是这项服务的端口?
谢谢,阿德里安娜
我在D7应用程序中使用TwebBrowser.问题是:当我升级我的IE时,这个组件会使用新的IE渲染页面吗?
如何从delphi 7中获取组合框的选取值
让我们说它有项目,如何知道哪一行(项目)被选中?
我有一个关于Lua metatables的问题.我听到并查看了它们,但我不明白如何使用它们以及用于什么.
我希望在以下函数中获得任何"记录"类型的大小.但似乎它不起作用:
function GetDataSize(P : Pointer) : Integer;
begin
Result := SizeOf(P^); // **How to write the code?**
end;
Run Code Online (Sandbox Code Playgroud)
例如,后续记录的大小为8个字节
SampleRecord = record
Age1 : Integer;
Age2 : Integer;
end;
Run Code Online (Sandbox Code Playgroud)
但GetDataSize(@a)总是返回1(当然,a是SampleRecord类型的变量).我该怎么办?
我注意到Delphi有一个程序过程New(var P:Pointer),可以分配内存块对应P指向的类型的大小.怎么能达到这个尺寸?
如何在Delphi 2010中设置待办事项列表类别.此语法不起作用:
// TODO 1 -cImportant: Do this!
Run Code Online (Sandbox Code Playgroud) 是否有任何技术或工具可用于在运行时检测此类死锁?
在工作线程(几个中的一个,通常是4-6)中描绘这个
try
WaitForSingleObject(myMutex);
DoSTuffThatMightCauseAnException;
except
ReleaseMutex(myMutex);
end;
Run Code Online (Sandbox Code Playgroud)
或者更普遍的是有一种设计模式来避免这些错误吗?
经过长时间的黑客攻击,我在上面的代码中编写了上面的代码
我有一个IEnumerable<Point>收藏品.可以说它包含5个点(实际上它更像2000)
我想订购这个集合,以便集合中的特定点成为第一个元素,因此它基本上是在特定点切割集合并将它们重新连接在一起.
所以我的5点清单:
{0,0}, {10,0}, {10,10}, {5,5}, {0,10}
关于索引3处的元素重新排序将变为:
{5,5}, {0,10}, {0,0}, {10,0}, {10,10}
什么是解决此问题的计算效率最高的方法,或者是否存在已经存在的内置方法......如果是这样,我似乎找不到一个!
我一直在使用FindResource,LoadResource和LockResource来访问res文件中的资源.我有一个wave文件,我想通过我的Delphi应用程序提取和播放.
我没有提取就完成了,但这不是我想做的事情.我想先提取波形文件.谁能指出我正确的解决方案?
Delphi是否有能力编写IDE操作的脚本?我想在open delphi项目上执行脚本打开一些单元.我怎么能这样做
我无法阅读这行代码
public Wine (decimal price, int year) : this (price) { Year = year; }
Run Code Online (Sandbox Code Playgroud)
什么:this在构造函数中的关键字做
public class Wine
{
public decimal Price;
public int Year;
public Wine (decimal price)
{
Price = price;
}
public Wine (decimal price, int year) : this (price)
{
Year = year;
}
}
Run Code Online (Sandbox Code Playgroud) delphi ×8
delphi-7 ×4
c# ×3
delphi-2010 ×3
.net ×1
collections ×1
combobox ×1
constructor ×1
debugging ×1
delphi-2009 ×1
function ×1
indy ×1
lua ×1
roblox ×1
scripting ×1
wcf ×1