小编Jon*_*age的帖子

如何查看文件以进行更改?

我有一个日志文件由另一个进程编写,我想要观察更改.每次发生变化时,我都想读取新数据,对其进行一些处理.

最好的方法是什么?我希望PyWin32库中有一些钩子.我找到了这个win32file.FindNextChangeNotification功能,但不知道如何让它看到一个特定的文件.

如果有人做过这样的事情,我会非常感激听到......

[编辑]我应该提到我是在一个不需要轮询的解决方案之后.

[编辑]诅咒!这似乎不适用于映射的网络驱动器.我猜Windows不会像在本地磁盘上那样"听到"文件的任何更新.

python file pywin32 watch

306
推荐指数
14
解决办法
26万
查看次数

如何从Visual Studio以调试模式运行NUnit?

我最近一直在构建一个C#的测试框架,我一直在努力.我在我的工作区中设置了NUnit和一个新项目来测试组件.如果我从Nunit(v2.4)加载我的单元测试,一切运行良好,但我已经达到了在调试模式下运行并设置一些断点非常有用的地步.

我已经尝试了几个指南中的建议,这些指南都建议更改测试项目的"Debug"属性:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll
Run Code Online (Sandbox Code Playgroud)

我在那里使用控制台版本,但也试过调用GUI.当我尝试开始调试时,两者都给出了同样的错误:

Cannot start test project 'TestDSP' because the project does not contain any tests.
Run Code Online (Sandbox Code Playgroud)

这是因为我通常将\ DSP.nunit加载到Nunit GUI中并且这是测试所在的位置吗?

我开始认为问题可能是VS想要运行它自己的测试框架,这就是为什么它没能找到NUnit测试?

编辑:对于那些询问测试装置的人,TestDSP项目中的一个.cs文件看起来大致如下:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...我对C#和NUnit测试框架都很陌生,所以我完全有可能错过了一些关键的信息;-)

最终解决方案:最大的问题是我使用过的项目.如果您选择Other Languages -> Visual C# -> Test -> Test Project...当您选择项目类型时,Visual Studio将尝试使用它自己的测试框架,据我所知.您应该选择一个正常的 C#类库项目,然后我选择的答案中的说明将起作用.

c# testing nunit unit-testing visual-studio-2008

118
推荐指数
9
解决办法
9万
查看次数

#ifdef vs #if - 作为启用/禁用特定代码段编译的方法更好/更安全?

这可能是一种风格问题,但我们的开发团队有一点分歧,我想知道是否有其他人对此事有任何想法......

基本上,我们有一些调试打印语句,我们在正常开发过程中关闭.我个人更喜欢做以下事情:

//---- SomeSourceFile.cpp ----

#define DEBUG_ENABLED (0)

...

SomeFunction()
{
    int someVariable = 5;

#if(DEBUG_ENABLED)
    printf("Debugging: someVariable == %d", someVariable);
#endif
}
Run Code Online (Sandbox Code Playgroud)

有些团队更喜欢以下内容:

// #define DEBUG_ENABLED

...

SomeFunction()
{
    int someVariable = 5;

#ifdef DEBUG_ENABLED
    printf("Debugging: someVariable == %d", someVariable);
#endif
}
Run Code Online (Sandbox Code Playgroud)

......哪些方法对你来说听起来更好?为什么?我的感觉是,第一个更安全,因为总有一些东西被定义,并且没有危险它可以破坏其他地方的其他定义.

c c++ if-statement coding-style c-preprocessor

109
推荐指数
9
解决办法
9万
查看次数

为什么不允许使用静态const浮点数?

我有一个类,它基本上只包含我的应用程序使用的一堆常量定义.但出于某种原因,longs编译但float不是:

class MY_CONSTS
{
public :
    static const long   LONG_CONST = 1;      // Compiles 
    static const float FLOAT_CONST = 0.001f; // C2864
};
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

1>c:\projects\myproject\Constant_definitions.h(71) : error C2864: 'MY_CONSTS::FLOAT_CONST' : only static const integral data members can be initialized within a class
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

c++ visual-c++

64
推荐指数
5
解决办法
4万
查看次数

将常量放在if语句中的原因是什么?

我正在查看我正在使用的硬件接口的一些示例C++代码,并注意到以下几行中的许多语句:

if ( NULL == pMsg ) return rv;
Run Code Online (Sandbox Code Playgroud)

我敢肯定我听过有人说将常数放在第一位是一个好主意,但为什么呢?是否只是如果你有一个大的声明,你可以很快看到你正在比较什么,或者还有更多吗?

c++ if-statement coding-style constants

60
推荐指数
5
解决办法
7711
查看次数

如何使用.net StreamReader打开已打开的文件?

我有一些.csv文件,我正在使用它作为测试台的一部分.我可以打开它们并且没有任何问题地阅读它们,除非我已经在Excel中打开了文件,在这种情况下我获得了IOException:

System.IO.IOException:进程无法访问文件'TestData.csv',因为它正由另一个进程使用.

这是测试平台的片段:

using (CsvReader csv = new CsvReader(new StreamReader(new FileStream(fullFilePath, FileMode.Open, FileAccess.Read)), false))
{
    // Process the file
}
Run Code Online (Sandbox Code Playgroud)

这是StreamReader的限制吗?我可以在其他应用程序(例如Notepad ++)中打开该文件,因此它不能成为操作系统问题.也许我需要使用其他一些课程?如果有人知道如何绕过这个(除了关闭excel!)我会非常感激.

.net file readonly streamreader

48
推荐指数
3
解决办法
5万
查看次数

C#WPF IsEnabled使用多个绑定?

我有一个描述GUI部分的WPF xaml文件,我希望特定控件的启用/禁用依赖于其他两个控件.代码看起来像这样:

<ComboBox Name="MyComboBox"
          IsEnabled="{Binding ElementName=SomeCheckBox, Path=IsChecked}"/>
Run Code Online (Sandbox Code Playgroud)

但我希望它依赖于另一个复选框,所以类似于:

<ComboBox Name="MyComboBox"
          IsEnabled="{Binding ElementName=SomeCheckBox&AnotherCheckbox, Path=IsChecked}"/>
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?我情不自禁地觉得我错过了一些明显的东西或者错误的方式?

c# wpf binding combobox isenabled

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

如何从嵌套的Python生成器函数中产生结果?

我有一个功能,可以在下载时产生结果.出于这个问题的目的,让我说我每秒产生一次刺痛,但我想要一个方便函数来包装我的生成器:

import time

def GeneratorFunction(max_val):
    for i in range(0,5):
        time.sleep(1)
        yield "String %d"%i

def SmallGenerator():
    yield GeneratorFunction(3)

for s in SmallGenerator():
    print s
Run Code Online (Sandbox Code Playgroud)

...为什么不打印出我期待的5根弦?相反,它似乎返回生成器函数:

<generator object GeneratorFunction at 0x020649B8>
Run Code Online (Sandbox Code Playgroud)

如何让这个产生字符串作为普通的生成器函数?

python yield nested function generator

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

如何填充printf以考虑负号和可变长度数?

我试图在日志文件中输出一些数字,我想通过printf函数填充一大堆浮点数来产生:

 058.0
 020.0
 038.0
-050.0
 800.0
 150.0
 100.0
Run Code Online (Sandbox Code Playgroud)

目前我这样做:

printf("% 03.1f\n", myVar);
Run Code Online (Sandbox Code Playgroud)

...其中myVar是一个浮点数.该语句的输出如下所示:

58.0
20.0
38.0
-50.0
800.0
150.0
100.0
Run Code Online (Sandbox Code Playgroud)

根据我的阅读,我希望我的代码能够产生我在本文顶部提到的输出,但显然有些不对劲.你一次只能使用一面旗帜吗?..或者还有其他什么东西在这里?

c floating-point formatting printf

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

托管C++中的C#的lock()

托管C++是否具有与C#的lock()和VB的SyncLock相同的功能?如果是这样,我该如何使用它?

multithreading synchronization managed-c++

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