我有一个课程,其中我想使用固定大小的字符串.固定大小的原因是类"序列化"为具有固定长度值的文本文件.我想避免将foreach值写为一个保护子句,而是让类处理它.
所以我有大约30个属性,看起来像这样
public String CompanyNumber
{
get
{
return m_CompanyNumber.PadLeft(5, ' ');
}
set
{
if (value.Length > 5)
{
throw new StringToLongException("The CompanyNumber may only have 5 characters", "CompanyNumber");
}
m_CompanyNumber = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我想有一个String来处理这个问题.目前我有以下内容:
public class FixedString
{
String m_FixedString;
public FixedString(String value)
{
if (value.Length > 5)
{
throw new StringToLongException("The FixedString value may consist of 5 characters", "value");
}
m_FixedString= value;
}
public static implicit operator FixedString(String value)
{
FixedString fsv = new FixedString(value);
return …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Excel 2010加载项,以前是Excel 2007加载项.在切换计算机的过程中,我认为加载项已被转换.
我的一些客户表示加载项不再适用于Excel 2007,因此我尝试在安装了Excel 2007和Visual Studio 2010的VirtualBox中对其进行调试.
现在我收到错误信息:
您无法调试或运行此项目,因为未安装所需的Microsft Office应用程序版本.
我开始了一个新的Excel 2007加载项目,并尝试找出差异是什么,并想出它与dll有点关系,所以我改变了我的2010插件,直到它看起来像2007插件.
我仍然收到错误消息,指出我的项目无法调试.
有什么我可以忘记改变的吗?
遗憾的是,编写一个全新的插件不是一种选择.
到目前为止,这些问题对我没有帮助:
我正在编写一个简短的算法,它必须比较两个DataSet,以便可以进一步处理两者之间的差异.我尝试通过合并这两个DataSet来完成这个目标,并将结果更改到新的DataSet中.
我的方法如下所示:
private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion)
{
DataSet diff = null;
oldVersion.Merge(newVersion);
bool foundChanges = oldVersion.HasChanges();
if (foundChanges)
{
diff = oldVersion.GetChanges();
}
return diff;
}
Run Code Online (Sandbox Code Playgroud)
foundChanges的结果始终为false,即使两个DataSet中的值不同.两个DataSet都具有相同的结构.它们由三个DataTable组成,这三个DataTable是数据库中三个查询的结果.合并工作没有问题.
我的问题是:有没有合理的解释为什么foundChanges变量总是假的,如果没有,Linq会为这个问题提供一个合适的解决方案,或者我必须通过迭代DataSet来确定更改
以下是一些进一步的信息:编程语言是C#我正在使用.Net framework 4.0我在Windows 8机器上开发所提到的数据来自数据库(MSSQL Server 2012 express)我的DataSet或DataTables没有任何PK的我所知道的.
提前致谢
我试图在C#项目中使用ServiceReference.该项目旨在测试连接.我有一个客户试图将C#应用程序连接到我的一个同事的一个Web服务.连接无法建立,他认为这是我们自己的错误.
我正在尝试编写一个简单的C#项目.多数故事......现在需要信息.
这里我的方法的源代码:
private void button2_Click(object sender, EventArgs e)
{
try
{
//Create Client
ServiceReference1.TempConvertSoapClient client = new ServiceReference1.TempConvertSoapClient(@"TempConvertSoap",@"http://www.w3schools.com/webservices/tempconvert.asmx");
if (client.ClientCredentials != null)
{
//Use Values which are typed in in the GUI
string user = tbUser.Text;
string password = tbPassword.Text;
string domain = tbDomain.Text;
//Check what information is used by the customer.
if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(password) && !string.IsNullOrEmpty(domain))
{
client.ClientCredentials.Windows.ClientCredential = new NetworkCredential(user, password, domain);
}
if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(password))
{
client.ClientCredentials.Windows.ClientCredential …Run Code Online (Sandbox Code Playgroud) 我试图检查inno设置如果目录存在,我想分别手动编程.我在Inno设置中创建的安装程序是一个更新.这是棘手的部分,初始设置使用C#应用程序来安装光盘上的所有文件,因为每个客户的设置都不同.我想现在检查安装了哪些目录,因为我知道我需要更新什么.我的问题是:如何在Inno设置中确定目录是否存在,或者如何确定目录中的子目录
并一如既往地提前感谢.
我正在重构Inno Setup项目,对我来说不太清楚的是使用TArrayOfString,String和TStringList数组.这三种类型有什么不同?据我所知,它的使用似乎没有区别.所有三个存储字符串,我可以使用数组\列表获取存储的字符串,如下所示:arrayName[i].
当使用其中一个时,是一个更快还是被认为是错误的编码?我希望有人可以在这件事上给我带来清晰的认识.
我有一个正在运行的Inno Setup脚本,其中我使用Sherlock Software的innocallback.dll.
这个DLL包装了我的一个过程,以便它可以传递给C#DLL.
我不想使用这个DLL,我想直接调用我导出的C#方法并将回调过程传递给它.
我的问题是:
如何将我的Inno安装程序(@mycallback)传递给我的C#DLL,以便我可以将它用作我的delegate/ UnmanagedFunctionPointer?
正如我所说的这段代码有效,但我想尽量少用外部DLL.
这是我的代码:
Inno安装脚本
type
TTimerProc=procedure();
TProgressCallback=procedure(progress:Integer);
function WrapProgressProc(callback:TProgressCallback; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function Test(callback:longword): String;
external 'Test@files:ExposeTestLibrary.dll stdcall';
var
endProgram : Boolean;
procedure mycallback(progress:Integer);
begin
MsgBox(IntToStr(progress), mbInformation, MB_OK);
if progress > 15 then
begin
endProgram := True;
end
end;
function InitializeSetup:boolean;
var
progCallBack : longword;
callback : longword;
msg : longword;
msg2 : widestring;
begin
endProgram := False;
progCallBack:= WrapProgressProc(@mycallback,1); //Our proc has 1 arguments
Test(progCallBack);
result:=true; …Run Code Online (Sandbox Code Playgroud) 我和一位同事在Excel中遇到了一个我们不清楚的行为.
背景:
我们有一个工具可以将Excel工作表转换为表格格式.该工具计算excel中的公式,并用特定值替换其中的变量.excel工具由我们的一个使用(8)或(247)等值的客户使用.这些值由excel自动转换为-8或-247.
问:我看到很多人想在括号中显示负数,但为什么会将括号中的值更改为负数.我知道我可以简单地将单元格配置更改为文本,这可以解决问题,但我想知道是否有这种行为的原因,因为似乎没有数学原因.
我想知道为什么原语不可空.
今天我看了这个
null关键字是表示空引用的文字,不引用任何对象.null是引用类型变量的默认值.普通值类型不能为空.但是,C#2.0引入了可空值类型.请参阅Nullable Types(C#编程指南).
所以我知道int?在C#或IntegerJava 中有可空的原语,但为什么不是int或bool等直接可以为空?
这个问题不是针对任何编程语言,而是编程语言中存在差异,为什么它们不允许原语为空?
我正在阅读一些风格指南,并看到了关于可选标签的相互矛盾的建议。
谷歌说:
省略可选标签(可选)。出于文件大小优化和可扫描性的目的,请考虑省略可选标签。HTML5 规范定义了可以省略哪些标签。
(这种方法可能需要建立一个宽限期作为更广泛的指导方针,因为它与 Web 开发人员通常所教的内容大不相同。出于一致性和简单性的原因,最好省略所有可选标签,而不仅仅是选择。)
W3CSchools 说:
关闭所有 HTML 元素 在 HTML5 中,您不必关闭所有元素(例如
<p>元素)。我们建议关闭所有 HTML 元素:
和
我们不建议省略 <html> 和 <body> 标签。
这意味着 Google 更喜欢:
<!-- Recommended -->
<!DOCTYPE html>
<title>Saving money, saving bytes</title>
<p>Qed.
Run Code Online (Sandbox Code Playgroud)
W3CSchools 更喜欢:
<!DOCTYPE html>
<html>
<title>Page Title</title>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
写这个也被认为是“不好看”,而谷歌会推荐它。
<section>
<p>This is a paragraph.
<p>This is a paragraph.
</section>
Run Code Online (Sandbox Code Playgroud)
我发现 W3CSchools 对 head 标签有所不同非常有趣
是否有充分的理由停止使用可选标签? 就我个人而言,我发现代码可读性较差,但这纯粹是基于意见的,我想通过一些培训,我会更喜欢一种而不是另一种。
谷歌表示这是为了尺寸优化和可扫描性目的,但这真的是一个很好的理由吗?下面的文章提出了一些建议,但在我看来更多基于意见,我正在寻找停止使用可选标签的充分理由
这里的资源:
c# ×6
inno-setup ×3
.net ×1
add-in ×1
brackets ×1
callback ×1
dataset ×1
diff ×1
directory ×1
dll ×1
dllexport ×1
excel ×1
excel-2007 ×1
excel-2010 ×1
html ×1
java ×1
merge ×1
null ×1
nullable ×1
pascal ×1
proxy ×1
tstringlist ×1
vsto ×1
web-services ×1