小编Mar*_*ram的帖子

如何让Select-Object返回原始类型(例如String)而不是PSCustomObject?

下面的代码给了我一个PSCustomObjects数组,如何让它返回一个字符串数组?

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!($_.psiscontainer)}
Run Code Online (Sandbox Code Playgroud)

(作为第二个问题,什么是psiscontainer部分?我从网上的例子中复制了它)

接受后编辑:两个很好的答案,希望我可以标记它们.已经给出了原始答案.

powershell pscustomobject

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

C++ 11继承构造函数和访问修饰符

假设以下布局:

class Base
{
protected:
    Base(P1 p1, P2 p2, P3 p3);

public:
    virtual void SomeMethod() = 0;
}

class Derived : public Base
{
public:
    using Base::Base;

public:
    virtual void SomeMethod() override;
};
Run Code Online (Sandbox Code Playgroud)

我应该能够在Derived这里指定公共构造函数吗?VC++给出以下错误:

无法访问类'Derived'中声明的受保护成员
编译器已在此处生成'Derived :: Derived'[指向使用Base :: Base行]
请参阅'Derived'的声明

即它忽略了继承构造函数上方的访问修饰符.

这是该功能的限制吗?Base对于具有公共构造函数的类没有任何意义,因为它永远不能直接实例化(由于纯虚方法).

c++ visual-c++ c++11 inheriting-constructors

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

什么时候应该调用glVertexAttribPointer?

glVertexAttribPointer应该调用何时从文档中看不出来.看起来它是VBO初始化的一部分,但我注意到在渲染过程中调用它的示例代码.

glVertexAttribPointer(vertexAttributeId, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), reinterpret_cast<const GLvoid*>(offsetof(Vertex2D, m_x)));

应该glVertexAttribPointer在初始化期间调用,GL_ARRAY_BUFFER还是应该在渲染期间调用(调用之后glBindBuffer)?

opengl

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

如何将HttpWebRequest与GET方法一起使用

我有以下代码,当方法是"POST"时工作正常,但更改为"GET"不起作用:

HttpWebRequest request = null;
request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.Method = "POST"; // Doesn't work with "GET"

request.BeginGetRequestStream(this.RequestCallback, null);
Run Code Online (Sandbox Code Playgroud)

ProtocolViolationException用"GET"方法得到一个例外.

编辑:看了一下使用Reflector后,似乎有一个显式检查"GET"方法,如果设置为它会抛出异常.

Edit2:我已经将我的代码更新为以下内容,但是当我调用EndGetResponse()时它仍会抛出异常

if (request.Method == "GET")
{
    request.BeginGetResponse(this.ResponseCallback, state);
}
else
{
    request.BeginGetRequestStream(this.RequestCallback, state);
}
Run Code Online (Sandbox Code Playgroud)

在我的函数ResponseCallback中,我有这个:

HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
Run Code Online (Sandbox Code Playgroud)

这也引发了异常.

回答

上面的代码现在可以工作了,我忘了取出导致异常被抛出的Content-Type行.+1来调整和回答Jon.

工作代码如下:

HttpWebRequest request = null;
request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Method = "GET";// Supports POST too

if (request.Method == "GET")
{
    request.BeginGetResponse(this.ResponseCallback, state);
}
else
{
    request.BeginGetRequestStream(this.RequestCallback, state); …
Run Code Online (Sandbox Code Playgroud)

.net c# silverlight web-services http

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

使用参数从subprocess.call调用app

我是Python的初学者,我一直在尝试调用命令行应用程序,但它失败了:

>>> import subprocess as s
>>> s.call("gpio -g read 17")
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.6/subprocess.py", line 470, in call
        return Popen(*popenargs, **kwargs).wait()
    File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
        errread, errwrite)
    File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
        raise child_exception
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是如果我添加shell=True它就会开始工作.有人可以解释原因吗?

>>> import subprocess as s
>>> s.call("gpio -g read 17", shell=True)
>>> 0
Run Code Online (Sandbox Code Playgroud)

python process python-2.6 raspberry-pi

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

存储此指针以在WndProc中使用的最佳方法

我很想知道存储this指针的最佳/常用方法WndProc.我知道几种方法,但据我所知,每种方法都有其自身的缺点.我的问题是:

有哪些不同的方式来生成这种代码:

CWindow::WndProc(UINT msg, WPARAM wParam, LPARAM)
{
  this->DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

我可以想到Thunks,HashMaps,Thread Local Storage和Window User Data结构.

每种方法的优点/缺点是什么?

代码示例和建议获得的分数.

这纯粹是出于好奇心.使用MFC之后,我一直想知道它是如何工作的,然后开始考虑ATL等.

编辑:我可以HWND在窗口过程中有效使用的最早的地方是什么?它记录为WM_NCCREATE- 但如果您实际进行实验,那不是第一个发送到窗口的消息.

编辑: ATL使用thunk访问此指针.MFC使用HWNDs 的哈希表查找.

c++ windows oop winapi wndproc

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

将char数组初始化为字符串值,未初始化的索引是否设置为null?

如果我有以下内容:

char test[10] = "#";
Run Code Online (Sandbox Code Playgroud)

test[1]通过test[9]保证\0吗?或者只test[1]保证是\0

c++ initialization declaration

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

在使用Sandcastle构建期间自动生成html文档

通过Visual Studio中的构建步骤,我需要采取哪些步骤来自动构建HTML文档?我已经准备好所有注释并生成了comments.xml文件,并安装了Sandcastle.我只需要知道要在构建后步骤中添加什么以生成文档.

c# documentation sandcastle visual-studio-2008

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

如何在PowerShell中从数组创建ArrayList?

我有一个数组中的文件列表.我想枚举这些文件,并从中删除特定文件.显然我无法从数组中删除项目,所以我想使用一个ArrayList.但以下对我不起作用:

$temp = Get-ResourceFiles
$resourceFiles = New-Object System.Collections.ArrayList($temp)
Run Code Online (Sandbox Code Playgroud)

$temp数组在哪里.

我怎样才能做到这一点?

powershell

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

Windows默默捕获的异常,如何手动处理?

当消息泵中抛出异常时,我们遇到的问题是Windows静默地吃异常并允许应用程序继续运行.例如,我们创建了一个测试MFC MDI应用程序,并覆盖了OnDraw:

void CTestView::OnDraw(CDC* /*pDC*/)
{
    *(int*)0 = 0; // Crash

    CTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: add draw code for native data here
}
Run Code Online (Sandbox Code Playgroud)

在运行应用程序时,您会发现一个令人讨厌的错误消息,但实际上您什么也得不到.该程序似乎运行得很好,但是如果你检查输出窗口,你会看到:

Test.exe中0x13929384处的第一次机会异常:0xC0000005:访问冲突写入位置0x00000000.
Test.exe中0x77c6ee42的第一次机会异常:0xC0150010:当前执行的线程未激活的激活上下文无效.

我知道为什么我收到应用程序上下文异常,但为什么要静默处理?这意味着我们的应用程序在使用时可能会遇到严重问题,但我们永远不会知道它,因为我们的用户永远不会报告任何问题.

c++ windows mfc exception message-pump

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