小编Vec*_*tor的帖子

如果FreeOnTerminate = true并且在OnTerminate中抛出异常,那么线程会发生什么?

在这个例子中,我们如何确保线程实例已被释放?当Thread.FreeOnTerminate = true并且你在Thread.OnTerminate事件中爆炸时,线程实例会发生什么?线程是否是孤立的,除非你处理异常并在OnTerminate中释放线程explicitey?

// Thread constructor

constructor TMyThread.Create(CreateSuspended: Boolean);
begin
  inherited Create(CreateSuspended);
  Self.FreeOnTerminate := True;
end;

// TMyThread OnTerminate event

procedure TMyThread.OnTerminate(Sender: TObject);
var o: TObject;     
begin
  o:=nil;
  showmessage(o.classname); // guaranteed AV
end;
Run Code Online (Sandbox Code Playgroud)

delphi multithreading

2
推荐指数
1
解决办法
1537
查看次数

在Python中实现类似于接口的好方法是什么?

在Python中实现类似于Delphi / C#接口或抽象类的好方法是什么?一个会强制其所有子类实现特定方法集的类?

python types interface

2
推荐指数
1
解决办法
111
查看次数

Ubuntu 12.04附带的GNU编译器是否与C++ 11不兼容?

Ubuntu 13.04更新遇到了一些问题,所以我拿下了我的Ubuntu 13.04系统并安装了12.04 LTS和gnome shell,这是我喜欢的外观和感觉.

我主要使用Ubuntu进行C++开发并使用C++ 11.我首选的IDE是CodeLite http://www.codelite.org/.

我安装了CodeLite并为GNU g ++ C++编译器添加了C++ 11编译器开关:-std = c ++ 11,就像我之前做的那样.(我有很多使用C++ 11的项目,我可以在13.04编译和构建它们.)

但我无法使用12.04上的编译器开关编译项目.我收到一条错误消息:

cc1plus:错误:无法识别的命令行选项'-std = c ++ 11'.

没有C++ 11,我可以毫无问题地构建和运行C++项目.

Ubuntu 12.04附带的GNU编译器是否与C++ 11不兼容?我该如何解决?我查看了Synaptic并没有找到任何可用的升级.我在12.04之前从未尝试过,但C++ 11开关在12.10上工作正常.

我被困了?我该如何解决这个问题,以便我可以继续使用12.04并使用C++ 11?

g++ c++11 ubuntu-12.04

2
推荐指数
1
解决办法
6397
查看次数

键入安全的Python 3.2字典

在Python(3.2)中实现类型安全字典的好方法是什么 - 一个只允许将特定类型的对象添加到自身的字典?

我自己有一个简单的解决方案:使用'addItem'方法在字典周围构建一个包装类,在添加对象之前执行类型检查断言.想看看有人有更好的东西.

python dictionary types

1
推荐指数
2
解决办法
523
查看次数

如何在OpenSource IDE(codelite)中迁移到C++ 11

我在Ubuntu QQ上使用CodeLite 5.1.默认情况下,基于之前使用QQ和其他工具安装的内容,我有gtCC和gt ++工具链可用.我总是使用gt ++,这似乎与Boost相处得很好.

想要使用C++ 11运行 - 我需要采取哪些步骤?我需要安装C++ 11库吗?

c++ compiler-construction static-libraries c++11 codelite

1
推荐指数
1
解决办法
3030
查看次数

GoLang - termbox:恐慌:打开/ dev/tty:没有这样的设备或地址

我在Ubuntu 12.04 LTS机器上使用Go 1.2进行编码 - 使用LiteIDE(非常满意).

我下载并安装了go termbox软件包 - 构建了demo keyboard.go - 很好.

但是当我从LiteIDE运行时,我得到了这种恐慌 - 所有的termbox演示也是如此:

panic: open /dev/tty: no such device or address
Run Code Online (Sandbox Code Playgroud)

任何线索都会有所帮助....

go tty ubuntu-12.04

1
推荐指数
1
解决办法
1724
查看次数

是否存在标准惯用Go for"构造函数"?

鉴于以下内容:

type AStruct struct {
    m_Map map[int]bool
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在初始化AStruct之前不能使用实例AStruct.m_Map:

m_Map=make(map[int]bool,100)
Run Code Online (Sandbox Code Playgroud)

Init()在这种情况下,我已经为我的结构编写了一个函数:

func (s *AStruct) Init() {
    s.m_Map=make(map[int]bool,100)
}
Run Code Online (Sandbox Code Playgroud)

我并不特别关心这个设计,因为它需要(s *AStruct) Init()是公共的,并且要求客户端在使用实例之前明确地调用它AStuct- 在临时中有一个不可用的实例AStuct,等待生成一个panic.

在初始化完所有内容后,我可以设置init()私有并initialized boolstructset中声明一个标志并检查每个方法:trueinit()

func (s *AStruct) DoStuff {

    if !s.initialized {
         s.init()
    }

    s.m_Map[1]=false
    s.m_Map[2]=true
}
Run Code Online (Sandbox Code Playgroud)

但这很尴尬,并添加了多余的代码.

在Go中有没有标准的处理方式?保证m_Map的一个将被初始化而不依赖于客户端来调用Init()

constructor idioms initialization go

1
推荐指数
1
解决办法
301
查看次数

PyQt:可以为QPushButton分配QAction吗?

使用Python 3.2x和PyQT 4.8x:

我初始化了一个动作并分配给一个菜单项:

self.__actionOpen = QtGui.QAction(self.__mw)
self.__actionOpen.setObjectName("actionOpen")
self.__actionOpen.setText("OpenFile")
QtCore.QObject.connect(self.__actionOpen, QtCore.SIGNAL("triggered()"), self.__accessFile)
self.__menuFile.addAction(self.__actionOpen)
Run Code Online (Sandbox Code Playgroud)

工作正常 - 菜单项有标题"OpenFile",并调用动作信号/插槽.

我尝试使用QPushButton - 相同的QAction对象:

self.__buttonFile.addAction(self.__actionOpen)
Run Code Online (Sandbox Code Playgroud)

没有:按钮上没有标题,单击时没有任何反应.

行动不适用于QButton(addAction调用没有抱怨......)?或者我的代码有问题吗?也许"triggered()"信号不适合与QPushButton交互的动作?

python qt pyqt4 qpushbutton qaction

0
推荐指数
1
解决办法
5459
查看次数