小编Jus*_*tin的帖子

批处理文件中的子例程

给出以下代码:

@Echo off
ECHO Start
ECHO Calling SUB_A
CALL :SUB_A
ECHO Calling SUB_B
CALL :SUB_B

:SUB_A
    ECHO In SUB_A
    GOTO:EOF

:SUB_B
    ECHO In SUB_B
    GOTO:EOF

ECHO End
Run Code Online (Sandbox Code Playgroud)

我期待这个输出:

Start
Calling SUB_A
In SUB_A
Calling SUB_B
In SUB_B
End
Run Code Online (Sandbox Code Playgroud)

但我明白了:

Start
Calling SUB_A
In SUB_A
Calling SUB_B
In SUB_B
In SUB_A
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

batch-file

33
推荐指数
3
解决办法
6万
查看次数

python中的枚举

重复:
在Python中实现"枚举"的最佳方法是什么?

什么是在python中进行枚举的公认方式?

例如,目前我正在写一个游戏,并希望能够"向上","向下","向左"和"向右"移动.我正在使用字符串,因为我还没有弄清楚枚举是如何在python中工作的,所以我的逻辑充满了这样的事情:

def move(self, direction):
    if direction == "up":
        # Do something
Run Code Online (Sandbox Code Playgroud)

我想替换"up"类似的东西Directions.up

python enums

30
推荐指数
6
解决办法
5万
查看次数

如何在JavaScript中记录异常

作为C#开发人员,我习惯了以下异常处理方式:

try
{
    throw SomeException("hahahaha!");
}
catch (Exception ex)
{
    Log(ex.ToString());
}

Output
------

SomeNamespace.SomeException: hahahaha!
    at ConsoleApplication1.Main() in ConsoleApplication1\Program.cs:line 27
Run Code Online (Sandbox Code Playgroud)

它非常简单,但却告诉我关于异常是什么以及它在哪里需要知道的一切.

如何在JavaScript中实现等效的东西,异常对象本身可能只是一个字符串.我真的希望能够知道发生异常的确切代码行,但是下面的代码并没有记录任何有用的东西:

try
{
    var WshShell = new ActiveXObject("WScript.Shell");
    return WshShell.RegRead("HKEY_LOCAL_MACHINE\\Some\\Invalid\\Location");
}
catch (ex)
{
    Log("Caught exception: " + ex);
}

Output
------

Caught exception: [object Error]
Run Code Online (Sandbox Code Playgroud)

编辑(再次):只是为了澄清,这是内部应用程序,大量使用JavaScript.我正在寻找一种从生成系统中可能捕获的JavaScript错误中提取有用信息的方法 - 我已经有了一种日志记录机制,只是希望获得一个合理的字符串来记录.

javascript exception-handling

26
推荐指数
3
解决办法
4万
查看次数

JavaScript异常处理 - 显示行号

在JavaScript中捕获/处理异常时,如何确定异常发生时调用堆栈的内容?(如果可能的话,行号是什么)

try
{
    // etc...
}
catch (ex)
{
    // At this point here I want to be able to print out a detailed exception 
    // message, complete with call stack, and if possible line numbers.
}
Run Code Online (Sandbox Code Playgroud)

javascript callstack exception-handling

25
推荐指数
2
解决办法
3万
查看次数

控件如何在该控件外部处理鼠标单击?

我正在编写一个自定义控件,我希望控件在用户点击控件时从编辑状态切换到正常状态.我正在处理LostFocus事件,这有助于当用户选中时或者他们点击另一个可聚焦的控件时.但如果他们没有点击Focusable,它就不会切换出它的编辑状态.所以我有两个解决方案:

  • 当树进入编辑状态并为其添加处理程序MouseDownEvent(并处理"已处理"事件)时,将树向上移动到最顶层元素.在处理程序中,我将控件从其编辑状态中踢出,并从最顶层的元素中删除处理程序.这看起来有点像黑客,但它可能会运作良好.

示例代码:

private void RegisterTopMostParentMouseClickEvent()
{
   _topMostParent = this.FindLastVisualAncestor<FrameworkElement>();
   if ( _topMostParent == null )
      return;
   _topMostParent.AddHandler( Mouse.MouseDownEvent, new MouseButtonEventHandler( CustomControlMouseDownEvent ), true );
}

private void UnRegisterTopMostParentMouseClickEvent()
{
   if ( _topMostParent == null )
      return;
   _topMostParent.RemoveHandler( Mouse.MouseDownEvent, new MouseButtonEventHandler( CustomControlMouseDownEvent ) );
   _topMostParent = null;
}
Run Code Online (Sandbox Code Playgroud)
  • 使用Mouse.PreviewMouseDownOutsideCapturedElement并向我的控件添加处理程序.在处理程序中,我将控件从其编辑状态中踢出.但我似乎没有让事件发生.Mouse.PreviewMouseDownOutsideCapturedElement什么时候开始?

示例代码:

AddHandler( Mouse.PreviewMouseDownOutsideCapturedElementEvent, new MouseButtonEventHandler( EditableTextBlockPreviewMouseDownOutsideCapturedElementEvent ), true );
Run Code Online (Sandbox Code Playgroud)

c# wpf custom-controls mouseevent

25
推荐指数
2
解决办法
2万
查看次数

system.data.sqlite .net 4

是否有.Net 4版本的System.Data.SQLite?

目前我收到此错误:

混合模式程序集是针对运行时的版本"v2.0.50727"构建的,如果没有其他配置信息,则无法在4.0运行时加载.

什么是所需的"附加配置信息",或者我可以使用另一个版本?

.net sqlite

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

创建PerfMon计数器以记录每次调用的平均值(C#)

如何使用PerfMon计数器记录C#中方法的平均执行时间?

到目前为止,我只找到了增加或减少PerfMon计数器的示例代码.

c# perfmon

22
推荐指数
2
解决办法
3万
查看次数

为什么我会在这个简单的例子中得到"PInvokeStackImbalance"?

我正在创建一个非常简单的PInvoke示例:

extern "C" __declspec(dllexport) int Add(int a, int b)
{
    return a + b;
}

[DllImport("CommonNativeLib.dll")]
extern public static int Add(int a, int b);

return NativeMethods.Add(a, b);
Run Code Online (Sandbox Code Playgroud)

但每当我调用上面的NativeMethods.Add方法时,我都会得到以下托管调试助手:

检测到PInvokeStackImbalance消息:对PInvoke函数'CommonManagedLib!CommonManagedLib.NativeMethods :: Add'的调用使堆栈失衡.这很可能是因为托管PInvoke签名与非托管目标签名不匹配.检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配.

然后调用以预期的返回值完成,但是出现MDA消息既令人讨厌又令人担忧 - 我还没有完全理解PInvoke,但是从我读过的内容我很确定我的签名是正确的 - 什么我做错了吗?

这都是在32位操作系统上.

.net pinvoke extern

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

解析java中的xml字符串?

你如何解析存储在java字符串对象中的xml?

Java的XMLReader仅解析URI或输入流中的XML文档.是不是可以从包含xml数据的String解析?

现在我有以下内容:

try {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser sp = factory.newSAXParser();
    XMLReader xr = sp.getXMLReader(); 

    ContactListXmlHandler handler = new ContactListXmlHandler();
    xr.setContentHandler(handler);
    xr.p
} catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

在我的处理程序上我有这个:

public class ContactListXmlHandler extends DefaultHandler implements Resources {

    private List<ContactName> contactNameList = new ArrayList<ContactName>();

    private ContactName contactItem;

    private StringBuffer sb;

    public List<ContactName> getContactNameList() {
        return contactNameList;
    }

    @Override
    public void startDocument() throws …
Run Code Online (Sandbox Code Playgroud)

java xml

20
推荐指数
1
解决办法
3万
查看次数

汇编:在两个存储器地址之间移动

我正在尝试学习汇编(所以忍受我),我在这一行得到了一个编译错误:

mov byte [t_last], [t_cur]
Run Code Online (Sandbox Code Playgroud)

错误是

error: invalid combination of opcode and operands
Run Code Online (Sandbox Code Playgroud)

我怀疑这个错误的原因只是因为一个mov指令不可能在两个内存地址之间移动,但是半小时的谷歌搜索并且我无法确认这一点 - 是这样的吗?

另外,假设我是对的,这意味着我需要使用寄存器作为复制内存的中间点:

mov cl, [t_cur]
mov [t_last], cl
Run Code Online (Sandbox Code Playgroud)

什么是推荐使用的寄存器(或者我应该使用堆栈)?

x86 assembly instructions mov

19
推荐指数
4
解决办法
3万
查看次数