就像您自己所说:您可能有另一个可以是 IRelated 的类。如何将此类的实例添加到 List
中?
你必须写:
List<IRelated> listofrelateditems = new List<IRelated>();
您不应使用用作应用程序池帐户的用户帐户,因为您将始终看到系统帐户。在这种情况下,最好的方法是将应用程序池帐户更改为另一个不会用于其他目的的帐户。
该页面不包含 XML。它最多包含一个 XML 片段:
<?xml version="1.0"?>
<word>ampal</word>
<word>ample</word>
<word>hampel</word>
<word>hample</word>
<word>lampl</word>
<word>pampel</word>
<word>sample</word>
这是不正确的,因为没有文档元素。 SAX 将第一个
解释为文档元素,并正确报告“文档元素后的垃圾”,因为就其所知,文档元素在第 1 行结束。
要解决该错误,请执行以下操作不将此文档视为 XML。将其下载为文本,删除 XML 声明 (),然后在尝试处理它之前将其包装在假文档元素中。
使用 Chrome(我得到了大量数据)和 Firefox(我得到空响应)的试验和错误使我的“Accept-Language”标头为零。其他修改据说只是装饰性的,但我不确定 CookieJar。
import time
import sys
import urllib2
import urllib
from json import loads
import cookielib
base_url = "https://graph.facebook.com/search?q="
post_id = None
post_type = None
user_id = None
message = None
created_time = None
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders = [
('Accept-Language', 'en-US,en;q=0.8'),]
def doit(hour):
page = 1
search_term = "\"Plastic Planet\""
encoded_search_term = urllib.quote(search_term)
print encoded_search_term
type="&type=post"
url = "%s%s%s" % (base_url,encoded_search_term,type)
print url
data = True
while data:
response = opener.open(url)
opener.addheaders += [
('Referer', url) ]
content = response.read()
content = loads(content)
print "=================================="
for c in content["data"]:
print c.keys()
print "****************************************"
if "paging" in content:
print "current URL"
print url
print "next page!------------"
url = content["paging"]["next"]
print url
else:
print content
print url
data = False
doit(1)
这是一个经过清理的最小工作版本:
import urllib2
import urllib
from json import loads
import cookielib
def doit(search_term, base_url = "https://graph.facebook.com/search?q="):
opener = urllib2.build_opener()
opener.addheaders = [('Accept-Language', 'en-US,en;q=0.8')]
encoded_search_term = urllib.quote(search_term)
type="&type=post"
url = "%s%s%s" % (base_url,encoded_search_term,type)
print encoded_search_term
print url
data = True
while data:
response = opener.open(url)
content = loads(response.read())
print "=================================="
for c in content["data"]:
print c.keys()
print "****************************************"
if "paging" in content:
url = content["paging"]["next"]
else:
print "Empty response"
print content
data = False
doit('"Plastic Planet"')
创建一个继承自RequiredAttribute的新属性类并设置默认值。
public class LocalizedRequiredAttribute : RequiredAttribute {
public LocalizedRequiredAttribute() { /* TypeDef = typeof(Resources);*/ }
}
public class MyModel {
[LocalizedRequired]
public string RequiredStringWithDesc { get; set; }
}
主要问题的答案
要查看最后一个问题的答案,请参见此答案的底部
所有拖放的文件都可以通过 argv[orderOfTheFile]
(orderOfTheFile
是从 1-n),
但是 Windows 如何创建该顺序,现在这 是一个真正的谜...
无论如何,假设我将创建 26 个纯文本文件 ( *. txt ),从桌面上的 a.txt
到 z.txt
,
现在,如果我将它们拖放到到直接位于 C:\
驱动器上的 ArgsPrinter_c++.exe
上,
输出将类似于:
argc = 27
argv[0] = C:\ArgsPrinter_c++.exe
argv[1] = C:\Users\MyUserName\Desktop\c.txt
argv[2] = C:\Users\MyUserName\Desktop\d.txt
argv[3] = C:\Users\MyUserName\Desktop\e.txt
argv[4] = C:\Users\MyUserName\Desktop\f.txt
argv[5] = C:\Users\MyUserName\Desktop\g.txt
argv[6] = C:\Users\MyUserName\Desktop\h.txt
argv[7] = C:\Users\MyUserName\Desktop\i.txt
argv[8] = C:\Users\MyUserName\Desktop\j.txt
argv[9] = C:\Users\MyUserName\Desktop\k.txt
argv[10] = C:\Users\MyUserName\Desktop\l.txt
argv[11] = C:\Users\MyUserName\Desktop\m.txt
argv[12] = C:\Users\MyUserName\Desktop\n.txt
argv[13] = C:\Users\MyUserName\Desktop\o.txt
argv[14] = C:\Users\MyUserName\Desktop\p.txt
argv[15] = C:\Users\MyUserName\Desktop\q.txt
argv[16] = C:\Users\MyUserName\Desktop\r.txt
argv[17] = C:\Users\MyUserName\Desktop\s.txt
argv[18] = C:\Users\MyUserName\Desktop\t.txt
argv[19] = C:\Users\MyUserName\Desktop\u.txt
argv[20] = C:\Users\MyUserName\Desktop\v.txt
argv[21] = C:\Users\MyUserName\Desktop\w.txt
argv[22] = C:\Users\MyUserName\Desktop\x.txt
argv[23] = C:\Users\MyUserName\Desktop\y.txt
argv[24] = C:\Users\MyUserName\Desktop\z.txt
argv[25] = C:\Users\MyUserName\Desktop\a.txt
argv[26] = C:\Users\MyUserName\Desktop\b.txt
我的ArgsPrinter_c++.exe
源代码:
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
cout << "argc = " << argc << endl;
for(int i = 0; i < argc; i++)
cout << "argv[" << i << "] = " << argv[i] << endl;
std::cin.ignore();
return 0;
}
你的最后一个问题
我创建了一个简单的程序,它只创建你的类的一个sceleton,以便可以使用它,并且< strong>该程序的主要本身运行得很好 =>如果你的程序退出得太早,问题将出在你的类中......
经过测试的源代码:
#include <iostream>
#include <vector>
using namespace std;
class Converter{
public:
Converter(const char* f){ cout << f << endl; }
void getATCommandsFromCSV(){ cout << "called getATCommandsFromCSV" << endl; }
};
int main(int argc, char* argv[]) {
vector<string> files;
for (int g = 1; g < argc; g++) {
string s = argv[g];
string filename = "";
int pos = s.find_last_of("\\", s.size());
if (pos != -1) {
filename = s.substr(pos + 1);
cout << "argv[1] " << argv[1] << endl;
cout << "\n filename: " << filename << "\n pos: " << pos << endl;
files.push_back(filename);
}
files.push_back(s);
}
for (unsigned int k = 0; k < files.size(); k++)
{
cout << "files.at( " << k << " ): " << files.at(k).c_str() << endl;
Converter a(files.at(k).c_str());
a.getATCommandsFromCSV();
}
cout << "\n" << "Programm finished...\n\n" << endl;
cin.ignore();
return 0;
}
JSLint 文档说:
未定义的变量和函数
JavaScript 最大的问题是它
对全局变量的依赖,
特别隐含的全局变量。
如果变量没有显式地
声明(通常与 var
语句),然后 JavaScript 假设
该变量是全局的。这个可以
掩盖拼写错误的名字和其他
问题。JSLint 期望所有变量和
函数先声明再声明
使用或调用。这使得它能够
检测隐含的全局变量。这是
也是很好的做法,因为它使得
程序更容易阅读。
请注意该错误。几乎每个编码约定都希望您不要使用隐含的全局变量。
可以使用 var
关键字声明变量。
我发现通过运行一个在任何数字字段前面放置 ' 的脚本,可以将它们很好地导入到 SQL 中。
我在 12 个电子表格中的一个上遇到了这个问题,不知道为什么它会成为一个问题。
如果您有很多行,一个简单的 VBA 脚本可以使这一切变得容易。
将所有 Common Dll 放在另一个 Repo 中然后使用外部是否更好?
不一定是“另一个仓库”,但你绝对应该将其视为一个独立的项目。您的布局应如下所示:
-Project1
-trunk
-branches
-tags
-Project2
-trunk
-branches
-tags
-CommonDLL1
-trunk
-branches
-tags
-CommonDLL2
-trunk
-branches
-tags
-...
然后 Project1/trunk
可能会有一个 svn:externals
属性,其内容如下:
-r148 ^/CommonDLL1/trunk CommonDLL1
-r157 ^/CommonDLL2/trunk CommonDLL2
此属性使 subversion 自动创建文件夹 CommonDLL1每当您进行签出或更新时,
和 CommonDLL2
都位于 Project1/trunk
的工作副本中。
请注意外部定义如何包含修订号。这可以确保如果您更改 CommonDLL1 中的某些内容,则不会影响 Project1
,除非您显式更改外部定义中的修订号。这对于项目标签的不变性尤其重要。
这种方法有一些缺点,您必须权衡其优点:
如果您通过
Project1
的工作副本提交来对CommonDLL1
进行更改,那么您当更新后更改神秘消失时,您可能会感到困惑。这是因为 SVN 不会自动调整外部定义中的修订号。您必须显式更改它并提交该更改。让您的团队了解这一点。您的持续集成服务器不会自动发现最新的
Project1/trunk
不再针对最新的CommonDLL1/trunk
进行构建。只有当您更改外部定义中的修订号时,您才会发现这一点。
我已经尝试了几次谷歌搜索,以找到关于此问题的明确答案,但之前没有找到。刚才我发现一个线程实际上引用了有关该问题的微软知识库文章。文章 KB948869 描述了该问题。
知识库文章建议创建您自己的组合框并重写 ProcessDialogKey 方法。
我已经尝试过,但不幸的是,它似乎没有任何效果。这有点奇怪。我希望知识库文章中描述的解决方法是准确的。
不过,我找到了另一种解决方法,那就是使用 DropDownClosed 事件。
这确实似乎有效,但仅在使用 DropDownStyle.DropDown 时有效。当您将 DropDownStyle 设置为 DropDownList 时,键入字符不会触发 DropDownClosed (因为在这种情况下没有实际的下拉列表)。仅当您实际打开下拉列表并选择一个值时,才会触发 DropDownClosed 事件。
因此,这两种选择都不是一个好的答案。
更新
我什至尝试覆盖 MyComboBox 中的属性 SelectedIndex,让它调用
OnSelectedIndexChanged(EventArgs.Empty)
。输入一个字符并按 Alt+Down 后,setter 会被执行,但它会将值设置为 -1,这已经是了。按 Tab 键后,设置器不会再次执行,尽管 SelectedIndex 值确实发生了变化。看起来 ComboBox 绕过了设置,直接更改了 SelectedIndex 的支持字段。我相信类似的事情也可能发生在真正的 ComboBox 中。I've tried several google searches in order to find a definitive answer on this but didn't find one before. Just now I found a thread that actually refers to a Microsoft knowledge base article about the problem. Article KB948869 describes the problem.
The knowledge base article suggest to create your own combobox and override the ProcessDialogKey method.
I've tried it, but unfortunately, it doesn't seem to have any effect. Which is a bit strange. I would expect a workaround described in a knowledge base article to be accurate.
I found another workaround though, which is to use the DropDownClosed event in stead.
This does seem to work, but only when using DropDownStyle.DropDown. When you set the DropDownStyle to DropDownList, typing a character does not fire the DropDownClosed (as there is no actual drop down in that case). Only if you actually open up the drop down list and select a value the DropDownClosed event is fired.
So, both options are not really a good answer.
Update
I've even tried overriding property SelectedIndex in MyComboBox, having it call
OnSelectedIndexChanged(EventArgs.Empty)
. After typing a character and pressing Alt+Down, the setter is executed, but it's setting the value to -1, which it already is. After pressing Tab, the setter isn't executed again, although somehow the SelectedIndex value does change. It looks like the ComboBox is directly changing the backing field for SelectedIndex, bypassing the setting. I believe something like this probably also happens in the real ComboBox.WinForms ComboBox SelectedIndexChanged 在输入几个字符后按 Alt+Down 时不会触发