小编Tha*_*lia的帖子

如何使用可选参数创建Python函数?

我有一个Python函数,它需要几个参数.在某些情况下,可以省略其中一些参数.

def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
    #code
Run Code Online (Sandbox Code Playgroud)

这些参数d通过h是字符串,每个都有不同的含义.重要的是我可以选择以任意组合传递哪些可选参数.例如,(a, b, C, d, e)(a, b, C, g, h),或(a, b, C, d, e, f,或全部(这些是我的选择).

如果我可以重载函数会很棒 - 但我读到Python不支持重载.我试图在列表中插入一些必需的int参数 - 并得到一个参数不匹配错误.

现在我发送空字符串代替前几个缺少的参数作为占位符.我希望能够使用实际值调用函数.

有没有办法做到这一点?我可以传递一个列表而不是参数列表吗?

现在使用ctypes的原型看起来像:

_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]
Run Code Online (Sandbox Code Playgroud)

python arguments function optional-arguments

162
推荐指数
5
解决办法
34万
查看次数

在Python中提取文件路径(目录)的一部分

我需要提取某个路径的父目录的名称.这就是它的样子:directory_i_need.我正在使用其中的directory_i_need名称(而不是路径)修改"文件"的内容.我创建了一个函数,它将为我提供所有文件的列表,然后......

c:\stuff\directory_i_need\subdir\file
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python directory filepath

137
推荐指数
4
解决办法
16万
查看次数

无法创建变量类型"Item"的实例,因为它没有new()约束

我试图测试一个方法 - 并得到一个错误:

public interface IHasRect
{
    Rectangle Rectangle { get; }
}
Run Code Online (Sandbox Code Playgroud)

以下所需信息:

class Item : IHasRect
{
    public Item(Point p, int size)
    {
        m_size = size;
        m_rectangle = new Rectangle(p.X, p.Y, m_size, m_size); 
    }
}
Run Code Online (Sandbox Code Playgroud)

助手班:

public class SomeClass<T> where T : IHasRect
Run Code Online (Sandbox Code Playgroud)

对于要测试的函数,我需要实例化一个对象......

public void CountTestHelper<Item>() where Item : IHasRect
{
    Rectangle rectangle = new Rectangle(0, 0, 100, 100); 
    SomeClass<Item> target = new SomeClass<Item>(rectangle);            
    Point p = new Point(10,10);
    Item i = new Item(p, 10);      // error …
Run Code Online (Sandbox Code Playgroud)

c# generics templates compiler-errors

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

dll缺少对Windows 7文件的依赖性

我已经构建了一个可以从dot net使用的C++ dll.当我运行progran我得到一个错误,没有找到.

dll就在那里 - 但我用依赖walker检查了它 - 得到了以下内容:

API-MS-WIN-CORE-COM-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
DCOMP.DLL

Error opening file. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

我做了一个搜索 - 显然这些是Win 7文件,我有Windows 7 - 但没有找到它们.

我能做什么 ?

我正在使用VS2010,Windows 7

c++ dll dependencies interop windows-7

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

在Windows中安装最新的cppunit

我想在Windows上安装CppUnit.

我已经从这里下载它,解压缩它,并注意到所有文件都有,名字中有v,没有扩展名.

安装说明(在包含的文件中,以及我发现的建议安装Windows的每个站点上都是针对Linux的.)(安装CppUnit for Windows说明的示例).

其他人,只是为了构建:( 例如:为Visual Studio指令安装CppUnit在同一主题上安装第二个答案).

在上面的链接上接受的答案有一个评论说,接受它的人"排序它,我下载了另一个版本" - 在他遇到与我完全相同的问题之后 - 但没有指明什么版本或从哪里...

我上面的链接是最新版本.

我能够在2008年找到一个非常旧的版本1.12.1,它几乎可以构建(有很多错误).我现在用它来学习如何实现CppUnit.不过,它还有4年......我希望能够使用最新的版本......

请问,有人可以给我一些建议,我可以在Windows中实现并运行,以安装最新的cppUnit吗?

谢谢.

c++ windows install cppunit

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

公共职能与公共职位

在我一年的Qt编程中,我学到了很多关于信号和插槽的知识.但还不够......

http://doc.qt.io/qt-5/signalsandslots.html

插槽可用于接收信号,但它们也是正常的成员功能.

那么......有没有理由不在一个类中声明每一个函数QObject作为一个插槽继承它是否需要是一个?

在上面的链接中,他们给出了一个例子:

一个基于QObject的小类可能会读取:

#include <QObject>

class Counter : public QObject
{
    Q_OBJECT

public:
    Counter() { m_value = 0; }

    int value() const { return m_value; }

public slots:
    void setValue(int value);

signals:
    void valueChanged(int newValue);

private:
    int m_value;
};
Run Code Online (Sandbox Code Playgroud)

为什么将value()函数定义为普通函数而不是插槽?如果它们确实成为一个插槽,会有任何负面结果吗?

qt signals-slots

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

如何在VB.NET中获取正在运行的进程名称列表?

我试图找出一个应用程序(而不是vb.net)的实例是否已经在运行 - 因为我想启动它,但如果它已经运行我不想启动它.我找到了一个解决方案来检查进程是否正在运行:

Dim proc As Integer = Process.GetProcessesByName(ProcessName).GetUpperBound(0) + 1 
Run Code Online (Sandbox Code Playgroud)

如果> = 1(或只是进程号),则返回True.

我的问题是,这是一个第三方应用程序,它的进程名称不只是一个名称,但它包含一个版本号(我可能在运行时可能不知道),它似乎也添加了一个*32(很可能a*64如果它是在x64中安装的吗?).

我需要按名称获取正在运行的进程列表,并测试"processname"是否是名称的子字符串.但我没有成功获得名单,只有进程ID.

vb.net process

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

将c ++项目从4.0转换为3.5框架

我必须将c ++项目的目标框架从4.0更改为3.5.我发现这个问题/答案有助于如何做到这一点:使用vs2010将C++/CLI项目更改为4.0以外的另一个框架
我遇到了以下问题:我收到警告:

 warning MSB3258: The primary reference "path\file.dll" could not be resolved because it has an indirect dependency on the .NET Framework assembly "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than the version "2.0.0.0" in the current target framework
Run Code Online (Sandbox Code Playgroud)

与同为System, Version=4.0.0.0,Microsoft.VisualC, Version=10.0.0.0,System.Configuration, Version=4.0.0.0,System.Xml, Version=4.0.0.0,System.Security, Version=4.0.0.0,和System.Data.SqlXml, Version=4.0.0.0.这会导致所有依赖于无法找到的file.dll的项目出错.
我不知道如何解决这个问题.我也安装了Visual Studio 2008 - 虽然它似乎并不关心,并且使用Platform Toolset v90甚至使c ++项目无法构建.请帮忙 !

.net c++-cli upgrade .net-4.0 .net-3.5

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

无法将DTE,项目或解决方案转换为VCProject和VCCodeModel

我试图通过代码获取有关c + =程序的一些信息.我在EnvDTE上取得了一些成功,现在我需要使用VCProject和VCCodeModel,我遇到了投射问题(希望这就是全部...)

在工人阶级,我"application"从Connect传递了DTE .

我有:

EnvDTE.Project project = application.SelectedItems.Item(1).Project;
EnvDTE.Solution sol = (EnvDTE.Solution)application.Solution;
Run Code Online (Sandbox Code Playgroud)

我想使用"项目",而不是解决方案中的第一个项目作为我在网络上找到的例子 - 如下所示 - 但大多数情况下,我希望有一些先行的.

对于VCProject,我尝试过(关闭Microsoft的网站以及所有其他Web示例):

VCProject vcProject = (VCProject)application.Solution.Projects.Item(1).Object;
MessageBox.Show(vcProject.ProjectDirectory);
Run Code Online (Sandbox Code Playgroud)

要不就

VCProject vcProject = (VCProject)project.Object;
Run Code Online (Sandbox Code Playgroud)

对于VCCodeModel,我翻译为c#http : //msdn.microsoft.com/en-us/library/microsoft.visualstudio.vccodemodel.vccodeinclude.aspx:

public void GetAllIncludes()
{
  VCCodeModel vcCM = (VCCodeModel)application.Solution.Item(1).CodeModel;
  foreach (VCCodeInclude vcInclude in vcCM.Includes)
  {
    MessageBox.Show(vcInclude.DisplayName);
  }    
}
Run Code Online (Sandbox Code Playgroud)

两者都给予例外:

"unable to cast com object of type 'system.__comobject' to interface type Microsoft.VisualStudio.VCCodeModel"
"unable to cast com object of type 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim' to type Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProject"
Run Code Online (Sandbox Code Playgroud)

我怎么设置它?最好使用"项目"......或application.SelectedItems …

c# add-in visual-studio-2010 envdte

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

如何画笔宽度为0(隐形不是化妆品)?

我想绘制具有各种宽度边框的形状.

如果我设置width = 0,我希望(想象)这里没有边框......但我读到边框0非常薄("化妆品")边框.

如何用隐形边框绘制形状?

int penWidth = 0; // some user input, 0 to 20 maybe
QPen pen = QPen(Qt::red, penWidth, Qt::PenStyle(Qt::SolidLine));
painter->setPen(pen);
painter->setBrush(QBrush(Qt::SolidPattern));
painter->drawRect(someRect);
Run Code Online (Sandbox Code Playgroud)

c++ qt drawing

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