小编Bon*_*ngo的帖子

具有固定长度C#的String对象

我有一个课程,其中我想使用固定大小的字符串.固定大小的原因是类"序列化"为具有固定长度值的文本文件.我想避免将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)

.net c#

16
推荐指数
3
解决办法
4603
查看次数

将Excel 2010插件转换为2007插件(均为VSTO)

我目前正在使用Excel 2010加载项,以前是Excel 2007加载项.在切换计算机的过程中,我认为加载项已被转换.

我的一些客户表示加载项不再适用于Excel 2007,因此我尝试在安装了Excel 2007和Visual Studio 2010的VirtualBox中对其进行调试.

现在我收到错误信息:

您无法调试或运行此项目,因为未安装所需的Microsft Office应用程序版本.

我开始了一个新的Excel 2007加载项目,并尝试找出差异是什么,并想出它与dll有点关系,所以我改变了我的2010插件,直到它看起来像2007插件.

我仍然收到错误消息,指出我的项目无法调试.

有什么我可以忘记改变的吗?

遗憾的是,编写一个全新的插件不是一种选择.

到目前为止,这些问题对我没有帮助:

  1. 适用于Excel 2007和2010的Excel Addin
  2. 部署Office 2010插件

c# vsto add-in excel-2007 excel-2010

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

获取2个DataSet的差异c#

我正在编写一个简短的算法,它必须比较两个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# diff merge dataset

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

使用C#服务引用与代理

我试图在C#项目中使用ServiceReference.该项目旨在测试连接.我有一个客户试图将C#应用程序连接到我的一个同事的一个Web服务.连接无法建立,他认为这是我们自己的错误.

我正在尝试编写一个简单的C#项目.多数故事......现在需要信息.

  1. 客户使用代理服务器
  2. 我出于测试原因尝试连接到此Web服务 http://www.w3schools.com/webservices/tempconvert.asmx
  3. 我使用.Net Framework 4.0
  4. 我的项目编译成Windows窗体应用程序.

这里我的方法的源代码:

    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)

c# proxy web-services service-reference

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

Inno设置目录存在

我试图检查inno设置如果目录存在,我想分别手动编程.我在Inno设置中创建的安装程序是一个更新.这是棘手的部分,初始设置使用C#应用程序来安装光盘上的所有文件,因为每个客户的设置都不同.我想现在检查安装了哪些目录,因为我知道我需要更新什么.我的问题是:如何在Inno设置中确定目录是否存在,或者如何确定目录中的子目录

并一如既往地提前感谢.

directory pascal inno-setup

5
推荐指数
1
解决办法
6044
查看次数

TStringList vs String与TArrayOfString的数组

我正在重构Inno Setup项目,对我来说不太清楚的是使用TArrayOfString,String和TStringList数组.这三种类型有什么不同?据我所知,它的使用似乎没有区别.所有三个存储字符串,我可以使用数组\列表获取存储的字符串,如下所示:arrayName[i].

当使用其中一个时,是一个更快还是被认为是错误的编码?我希望有人可以在这件事上给我带来清晰的认识.

inno-setup tstringlist

5
推荐指数
1
解决办法
4419
查看次数

使用回调从Inno Setup调用C#DLL

我有一个正在运行的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)

c# dll inno-setup callback dllexport

5
推荐指数
1
解决办法
1489
查看次数

括号中的Excel值变为负值

我和一位同事在Excel中遇到了一个我们不清楚的行为.

背景:

我们有一个工具可以将Excel工作表转换为表格格式.该工具计算excel中的公式,并用特定值替换其中的变量.excel工具由我们的一个使用(8)或(247)等值的客户使用.这些值由excel自动转换为-8或-247.

:我看到很多人想在括号中显示负数,但为什么会将括号中的值更改为负数.我知道我可以简单地将单元格配置更改为文本,这可以解决问题,但我想知道是否有这种行为的原因,因为似乎没有数学原因.

excel brackets negative-number

5
推荐指数
1
解决办法
9673
查看次数

为什么不是原始的可空

我想知道为什么原语不可空.

今天我看了这个

null关键字是表示空引用的文字,不引用任何对象.null是引用类型变量的默认值.普通值类型不能为空.但是,C#2.0引入了可空值类型.请参阅Nullable Types(C#编程指南).

所以我知道int?在C#或IntegerJava 中有可空的原语,但为什么不是int或bool等直接可以为空?

这个问题不是针对任何编程语言,而是编程语言中存在差异,为什么它们不允许原语为空?

c# java null nullable

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

HTML 样式指南 Google 与 W3Schools(省略可选标签)

我正在阅读一些风格指南,并看到了关于可选标签的相互矛盾的建议。

谷歌说:

省略可选标签(可选)。出于文件大小优化和可扫描性的目的,请考虑省略可选标签。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 标签有所不同非常有趣

是否有充分的理由停止使用可选标签? 就我个人而言,我发现代码可读性较差,但这纯粹是基于意见的,我想通过一些培训,我会更喜欢一种而不是另一种。

谷歌表示这是为了尺寸优化和可扫描性目的,但这真的是一个很好的理由吗?下面的文章提出了一些建议,但在我看来更多基于意见,我正在寻找停止使用可选标签的充分理由

这里的资源:

  1. 谷歌风格指南
  2. HTML5 风格指南 …

html

5
推荐指数
1
解决办法
923
查看次数