我目前正在使用C API调用luaL_loadstring()来加载一个块,但是这个调用没有一种命名块的方法.
是否有一种方法可以在加载后命名一个块?
或者,我看到该lua_load()函数采用chunkname参数,但我没有找到如何使用它的任何示例:如何luaL_loadstring()用lua_load()?替换调用?
这个QC报告说Delphi不支持文件共享模式FILE_SHARE_DELETE
http://qc.embarcadero.com/wc/qcmain.aspx?d=45628
我需要将这种模式与 TFileStreams 一起使用 - 谁能想到一种不涉及修改库代码或从库中复制大量内容的简单解决方法?
我正在连接到一个发送UDP数据包的系统,作为响应(发送到特定IP地址)和广播(根据WireShark,目标255.255.255.255)
我可以正确接收'直接'数据包,但我无法弄清楚如何获得广播数据包.我假设我需要第二个具有不同绑定的TIdUDPClient,但我无法让它工作.
TIdUDPClient *reader(new TIdUDPClient(NULL));
TIdUDPClient *broadcastReader(new TIdUDPClient(NULL));
reader->Port = 2000;
reader->Host = "192.168.0.1";
reader->Connect();
broadcastReader->Port = 2000;
// broadcastReader->Host = "0.0.0.0"; // This doesn't work, but is here as an example
broadcastReader->BroadcastEnabled = true;
broadcastReader->Connect();
Run Code Online (Sandbox Code Playgroud)
然后,我有其他几乎相同的线程调用reader/broadcastReader->ReceiveBuffer().在reader一个工作正常,但broadcastReader->receiveBuffer()不会返回......
为C++代码和Delphi标签道歉;-)
下面的简单示例代码,包含生成的汇编程序.我很惊讶生成的代码涉及变体.Delphi当然不具备.
TDateTime t1;
TDateTime t2;
...
int x = 2 * (t2 - t1);
Run Code Online (Sandbox Code Playgroud)
生成的代码.
Unit23.cpp.18: int x = 2 * (t2 - t1);
00401814 66C745C82400 mov word ptr [ebp-$38],$0024
0040181A 8D45DC lea eax,[ebp-$24]
0040181D E852180000 call $00403074
00401822 50 push eax
00401823 FF45D4 inc dword ptr [ebp-$2c]
00401826 8D55A8 lea edx,[ebp-$58]
00401829 8D45A0 lea eax,[ebp-$60]
0040182C E8FB000000 call System::TDateTime::operator -(const System::TDateTime &)
00401831 DD5D94 fstp qword ptr [ebp-$6c]
00401834 8D5594 lea edx,[ebp-$6c]
00401837 8D45EC lea eax,[ebp-$14]
0040183A E8F1180000 call …Run Code Online (Sandbox Code Playgroud) 我编写了下面的代码来获取CDATA节点值,我得到了节点的名称,但值是空白的.
我将解析Flags更改为parse_full,但它也没有用.
如果我从XML中手动删除"<![CDATA ["和"]]>",它会按预期提供值,但在解析之前删除它不是一个选项.
代码:
#include <iostream>
#include <vector>
#include <sstream>
#include "rapidxml/rapidxml_utils.hpp"
using std::vector;
using std::stringstream;
using std::cout;
using std::endl;
int main(int argc, char* argv[]) {
rapidxml::file<> xmlFile("test.xml");
rapidxml::xml_document<> doc;
doc.parse<rapidxml::parse_full>(xmlFile.data());
rapidxml::xml_node<>* nodeFrame = doc.first_node()->first_node()->first_node();
cout << "BEGIN\n\n";
do {
cout << "name: " << nodeFrame->first_node()->name() << "\n";
cout << "value: " << nodeFrame->first_node()->value() << "\n\n";
} while( nodeFrame = nodeFrame->next_sibling() );
cout << "END\n\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
XML:
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0">
<itens>
<item>
<title><![CDATA[Title 1]]></title>
<g:id>34022</g:id>
<g:price>2173.00</g:price> …Run Code Online (Sandbox Code Playgroud) 我在源文件中看似无关紧要
#include <some_sys_header_file.h>"
Run Code Online (Sandbox Code Playgroud)
它被埋在一堆其他包含使用双引号(而不是尖括号)的内容中,因此没有发现虚假的双引号.
编译器(或者更确切地说,预处理器)很高兴,包括所需的文件,并跳过了剩下的行.
但是,在使用艺术风格格式化文件时,双引号导致文字字符串错误地分割为多行的混乱.
是否应该如何对待这个标准?
我在一些遗留代码中偶然发现了这个错误:
class MyAPIHandler
{
private:
int handle;
public:
void MyApiHandler() // default constructor
{
handle = 42;
};
};
Run Code Online (Sandbox Code Playgroud)
编译很好,没有警告 - 但行为不是我想要的,因为构造函数名称是拼写错误.这本身就会产生关于"函数不返回值"的警告,但我想我是在自动驾驶上并添加了一个"void"返回类型来"修复"这个.
现在,错误修复很容易,但我的问题是: -
我可以使用哪些技术来防止此类错误再次发生?
有些语言需要一个明确的"构造函数"关键字,这应该会使这个问题变得明显.单元测试,显然也应该抓住它.我还可以做些什么?
我正在从流中读取组件,并希望能够指定Owner属性.
var TComponent : comp;
stream.Seek(0, soFromBeginning);
comp := stream.ReadComponent(nil);
Run Code Online (Sandbox Code Playgroud)
谁拥有comp,我该如何改变呢?我希望readComponent的参数是所有者,但它似乎做了一些完全不同的事情!
在IDE中设计表单时,可以自由放置和定位非可视组件(例如TMainMenus,TDatamodules).该位置是持久的,因此在重新加载表单时,这些组件会出现在正确的位置.
但是,TComponent没有Top或Left属性!
那么,我的代码如何访问非可视组件的"设计位置"?
如果经常发现自己使用这样的代码:
boost::scoped_ptr<TFoo> f(new TFoo);
Bar(f.get()); // call legacy or 3rd party function : void Bar (TFoo *)
Run Code Online (Sandbox Code Playgroud)
现在,我认为智能指针可以轻松地将隐式转换运算符定义回"原始"指针类型,这将允许此代码仍然有效,并简化旧代码的"智能化"
Bar(f);
Run Code Online (Sandbox Code Playgroud)
但是,它们至少不是,而不是我发现的那些.为什么?
delphi ×4
c++ ×3
c++builder ×2
c ×1
c++11 ×1
chunks ×1
components ×1
constructor ×1
indy10 ×1
lua ×1
rapidxml ×1
scoped-ptr ×1
streaming ×1
tcomponent ×1
tdatetime ×1
tfilestream ×1
udp ×1
variant ×1
winapi ×1