我对它们之间的差异感到有点困惑
Type operator + (const Type &type);
Type &operator += (const Type &type);
Run Code Online (Sandbox Code Playgroud)
和
friend Type operator + (const Type &type1, const Type &type2);
friend Type &operator += (const Type &type1, const Type &type2);
Run Code Online (Sandbox Code Playgroud)
哪种方式是首选,它们看起来像什么,什么时候应该使用?
Delphi调试器非常适合调试线性代码,其中一个函数以可预测的线性方式调用其他函数,我们可以逐行逐步执行该程序.
我发现调试器在处理事件驱动的gui代码时没那么有用,其中一行代码可以导致触发新事件,这可能反过来触发其他事件.在这种情况下,"逐步执行代码"方法不会让我看到正在发生的一切.
我通常解决这个问题的方法是1)猜测哪些事件可能是问题的一部分,然后2)添加断点或记录每个事件.
问题是这种方法是随意而耗时的.
是否有一个开关我可以在调试器中轻弹以说'记录所有gui事件'?或者是否有一些我可以添加到陷阱事件的代码,例如
procedure GuiEventCalled(ev:Event)
begin
log(ev);
ev.call();
end
Run Code Online (Sandbox Code Playgroud)
我正在寻找的最终结果是这样的(例如):
FieldA.KeyDown
FieldA.KeyPress
FieldA.OnChange
FieldA.OnExit
FieldB.OnEnter
Run Code Online (Sandbox Code Playgroud)
这将需要Delphi gui调试的所有猜测.
我正在使用Delphi 2010
[编辑]一些答案建议拦截或记录Windows消息的方法.其他人则指出并非所有Delphi事件都是Windows消息.我认为这是我要问的这类"非Windows消息"事件; 由Delphi代码创建的事件.[/编辑]
[EDIT2]在阅读了这里的所有信息后,我有一个想法,即使用RTTI动态拦截TNotifyEvents并将它们记录到Debugging窗口中的Event Log.这包括OnEnter,OnExit,OnChange,OnClick,OnMouseEnter,OnMouseLeave事件.经过一段时间的黑客攻击后,我得到了相当好的工作,至少对我来说是这样(它不会记录Key事件,但可以添加).我在这里发布了代码
使用
在代码中的某个位置为要跟踪的每个表单添加此行.
AddEventInterceptors(MyForm的);
打开调试器窗口,所有调用的事件都将记录到事件日志中
[/ EDIT2]
我试图让Android TTS API读取我的"话语",然后调用onUtteranceCompleted()监听器失败.我已经注册了我的TTS对象,它返回SUCCESS,所以我无法弄清楚为什么我的回调没有被调用.
我试过寻求帮助,但似乎其他人也有这方面的困难.我错过了一些简单的事吗?
谢谢你尽你所能的帮助.
package com.test.mytts;
import java.util.HashMap;
import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
import android.widget.TextView;
import android.widget.Toast;
public class MyTTS extends Activity implements OnInitListener, OnUtteranceCompletedListener
{
TextView tv;
private TextToSpeech _tts;
@Override
public void onCreate(Bundle savedInstanceState)
{
tv = new TextView(this);
tv.setText("MyTTS: ");
super.onCreate(savedInstanceState);
setContentView(tv);
_tts = new TextToSpeech(this, this);
}
@Override
public void onInit(int status)
{
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "test");
if (status == TextToSpeech.SUCCESS) …Run Code Online (Sandbox Code Playgroud) 我正在开发谷歌浏览器扩展程序.我可以使用设置工具栏的图标
"default_icon": "icon.png".
Run Code Online (Sandbox Code Playgroud)
但是,当您浏览扩展程序时,我找不到设置扩展程序市场中显示的扩展程序图像的方法.
有任何想法吗?
我正在使用Eclipse进行Python编程.
在我的项目中,我有一个文件:main.py. 此文件位于项目文件层次结构的根目录中.在root本身中,我创建了一个名为Classes的文件夹,其中我有一个名为PositionWindow.py的类文件.该文件包含一个PositionWindow类,该类本身包含一个名为:Center()的函数.
在main.py中,我想导入这个类[PositionWindow],然后在适当的地方调用该函数中心.
我无法在main.py中正确导入该类,也无法在以后如何调用该函数.
使用jquery,确定元素是否在折叠之下的最佳方法是什么,这意味着它也不在窗口中并且对用户不可见?
谢谢
我正在使用Java中的iText从一个大的PDF文档中选择一些页面并保存为一个新的较小的PDF.与此同时,我想改变他们的颜色.
例如,假设我的页面都使用灰色阴影,我想将其设为绿色.使用的所有颜色都是灰色阴影.我想用绿色的相应颜色替换每种颜色.
Mark Storer问道:
你到底想要完成什么?
把这个...变成这个:


我有一些文件,我已经在使用iText根据用户输入从文档中选择一组较小的页面 - 将100多页减少到大约5页.同时我希望生成绿色,蓝色,黄色,粉红色等版本.不是每个页面都是灰度级的,而是所有重要的页面,所以如果需要的话我可以强制它们的颜色空间.
更新:
按照Mark Storer关于混合模式的建议,这就是我所拥有的:
val reader = new PdfReader(file.toURL)
val document = new Document
val writer = PdfWriter.getInstance(document, outputStream)
document.open()
/* draw a white background behind the page, so the
blend always has something to transform, otherwise
it just fills. */
val canvas = writer.getDirectContent
canvas.setColorFill(new CMYKColor(0.0f, 0.0f, 0.0f, 0.0f))
canvas.rectangle(10f, 0f, 100f, 100f)
canvas.fill
/* Put the imported page on top of that */
val page = writer.getImportedPage(reader, 1) …Run Code Online (Sandbox Code Playgroud) 任何人都可以解释为什么在使用loadView时不会调用viewDidLoad?我的理解是viewDidLoad应该仍然被调用.
- (void)loadView
{
CGRect currentFrame = [[UIScreen mainScreen] applicationFrame];
UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(currentFrame.origin.x, currentFrame.origin.y, currentFrame.size.width, currentFrame.size.height)];
myView.backgroundColor = [UIColor redColor];
self.view = myView;
[myView release];
[super loadView];
}
- (void)viewDidLoad {
//this never happens
NSLog(@"VIEW DID LOAD!");
[super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在RESTlet 文档上运行第一个服务器教程,但即使我将jar添加到我的类路径中,我也会收到错误.我添加了org.restlet.jar和org.restlet.ext.*
服务器的代码是:
package test;
import org.restlet.Server;
import org.restlet.data.Protocol;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
public class Test extends ServerResource {
public static void main(String[] args) throws Exception {
// Create the HTTP server and listen on port 8182
new Server(Protocol.HTTP, 8182, Test.class).start();
}
@Get
public String toString() {
return "hello, world";
}
}
Run Code Online (Sandbox Code Playgroud)
而我得到的错误是:
11/01/2011 1:22:08 PM org.restlet.engine.Engine registerHelper
INFO: Unable to register the helper org.restlet.ext.httpclient.HttpClientHelper
java.lang.NoClassDefFoundError: org/apache/http/conn/scheme/SocketFactory
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.getConstructor(Class.java:1657)
at org.restlet.engine.Engine.registerHelper(Engine.java:716)
at …Run Code Online (Sandbox Code Playgroud)