问题列表 - 第31508页

如何简化代码的这一部分?

我有一个代码:

    byte[][][] file = GetConfigData();

    if (file == null)
        return;

    int pages = 0;
    for (i = 0; i < file.Length; i++)
    {   
        if (file[i] != null)
        {   
            for (j = 0; j < file[i].Length; j++)
            {   
                if (file[i][j] != null)
                {
                    pages++;
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我该如何简化它?

请提供2个版本:

  1. 对于.net 2.0
  2. for .net 3.5(linq)

c#

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

Prism、Regions、Magic 字符串和重构:我在这里遗漏了什么吗?

为了在我的应用程序中构建具有不同区域的复合应用程序视图,直到现在,我一直使用内容展示器并使用数据绑定来设置其内容。

如果我想改变它的内容,我只需要使用一个事件聚合器,发布一个ViewZoneChangedEvent,在“shell”窗口中订阅它,并相应地更新视图模型,以便新数据可用于绑定和界面待更新。

现在,我最近在 Prism 中遇到了这些 Region,实际上我已经看过它们一段时间了,但我对它们感到不舒服,但是由于 Prism 是某种“最佳实践指南”,因此我可能遗漏了一些东西:让我解释一下为什么我觉得不舒服。

以我以前的做法,与 XAML 没有耦合。你从来没有提到应该出现在 XAML 中的任何特定的魔法字符串,我认为这是必不可少的,因为样式可以改变。

如果至少区域会执行区域名称的编译时检查(检查它是否真的存在于某处),这将强制使用有效的区域名称并且在重构时非常有帮助,但据我所知,没有这样的事情。有些人使用枚举和枚举的ToString方法将其转换为字符串并将其用作区域名称,但同样,据我所知,没有真正的例程来检查输入的字符串是否真的有效并显示错误例如,在为 Brushes.InValidColor 编译它的方式时。

所以,我的问题如下:与普通的旧绑定(如果您希望跨 ViewModel 进行通信,加上 eventAggregator)相比,棱镜区域带来了什么?

我对区域名称的编译时验证的假设是否正确?

wpf prism mvvm regions

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

错误的Unicode转换,如何在Delphi 2010源代码中存储重音字符并处理字符集?

我们正在将项目从Delphi 2006升级到Delphi 2010.旧代码是:

InputText: string;
InputText := SomeTEditComponent.Text;
...
for i := 1 to length(InputText) do
if InputText[i] in ['0'..'9', 'a'..'z', '?' { and more special characters } ] then ...
Run Code Online (Sandbox Code Playgroud)

问题是重音字母 - 比较会失败.

我尝试将源代码从ANSI切换到UTF8和LE UCS-2,但没有运气.仅作为AnsiChar投射:

if CharInSet(AnsiChar(InputText[i]), ['0'..'9', 'a'..'z', '?']) then
Run Code Online (Sandbox Code Playgroud)

有趣的是Delphi如何处理这些字母 - 在调试期间在Evaluate中尝试这个:

Ord('?') = Ord('Ø')
Run Code Online (Sandbox Code Playgroud)

(是的,Delphi说True,在Windows 7上捷克语)


问题是:如何在不强制它们作为AnsiStrings的情况下存储和比较简单字符串?因为如果这不起作用我们为什么要使用Unicode?

谢谢大家的回复

现在我们在一些部分使用简单的CharInSet(AnsiChar(...

delphi unicode character-encoding

7
推荐指数
2
解决办法
4343
查看次数

同时运行php脚本

我正在尝试使用脚本来处理很多dta记录,让我们把它命名为process.php,问题是我有一个庞大的数据集,为了让工作更快完成,我想运行这个脚本的多个实例同

/ usr/bin/php process.php start_record end_record&

所以我会让它们并行运行

/ usr/bin/php process.php 0 10000&

/ usr/bin/php process.php 10000 20000&

/ usr/bin/php process.php 20000 30000&

/ usr/bin/php process.php 30000 40000&

...

我认为这样可以更快地完成工作,但是在尝试之后我没有发现它更快,而是速度似乎非常接近线性方式(没有并发).我不知道是不是因为process.php正在将记录插入到innodb表中或者是什么.

有任何想法吗.

php shell concurrency

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

64位版本的Visual Studio 2010以32位版本运行

我们在64位操作系统上安装了Visual Studio 2010 64位版本,但在任务管理器中,Visual Studio 2010的映像名称显示为*32.在Google上搜索时,似乎显示屏表明Visual Studio 2010在32位版本上运行,我们在SQL Server 2005中遇到了同样的问题.安装了64位版本的.NET Framework.64位版本的程序运行为32位版本的原因是什么?

.net visual-studio-2010

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

在jsp中处理浏览器的"后退"按钮

我有一个jsp搜索页面(Search.jsp)和一个结果页面(Result.jsp),它们都可以选择搜索条件.然后将参数传递给java控制器文件(Controller.java)以构建查询字符串并执行查询搜索.查询字符串和搜索结果将传递给Result.jsp进行显示.

目前,我使用servletContext来记住已处理的查询字符串,如果用户使用Result.jsp选择搜索条件,Controller.java会将此类条件附加到现有查询字符串.如果我使用Result.jsp进行一些搜索.例如,查询字符串将显示((Query1) AND Query2) AND Query3在Result.jsp页面上.然后使用浏览器的后退按钮返回上一个显示页面.对于同一示例,将显示查询字符串(Query1) AND Query2.然后,如果我再次搜索.(((Query1) AND Query2) AND Query3) AND Query4将使用查询字符串.我知道这是我当前的实现所期望的,因为Result.jsp不会对已处理的查询字符串进行任何修改.

但是,我想当用户使用浏览器后退按钮,例如,查询字符串显示在页面上(Query1) AND Query2,并执行搜索时,查询字符串应该((Query1) AND Query2) AND Query4是根据结果上当前显示的查询字符串构建查询字符串的.jsp页面加上当前选择.我怎样才能做到这一点?这听起来很简单,但我已经尝试了几种使用Result.jsp来更新查询字符串的方法,但仍然无法正确使用它.因此,我想知道我的使用方法可能<c:set>是错误的.我想听听你的建议.提前致谢.

java search jsp servlets

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

关于javac

javac不是内部或外部命令错误即将到来.我已经设定了路径.然后它也给出了同样的错误.

java windows command-line

-1
推荐指数
1
解决办法
133
查看次数

可以像这样使用C#Property

我的一位开发人员有一个类似于以下代码段的代码

class Data
{
     public string Prop1
     {
           get
           {
                // return the value stored in the database via a query
           }
           set
           {
                // Save the data to local variable
           }
     }

     public void SaveData()
     {
          // Write all the properties to a file
     }

}

class Program
{
    public void SaveData()
    {
         Data d = new Data();
         // Fetch the information from database and fill the local variable
         d.Prop1 = d.Prop1; 
         d.SaveData();
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的Data类属性动态地从DB中获取信息.当需要将数据保存到文件时,开发人员创建实例并使用自我赋值填充属性.然后最后调用一个保存.我试图争论财产的使用是不正确的.但他并不相信.

这是他的观点

  1. 有近20个这样的属性.
  2. 除保存外,不需要获取所有信息. …

.net c#

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

如何将子视图添加到webview中,以便子视图与webview一起滚动?

我有webview.

现在我想为它添加一个子视图.我使用addsubview方法添加它.

视图已添加,但未使用webview滚动.

我希望我的子视图可以使用webview滚动.

我怎样才能做到这一点?

此致,Akshay.

iphone add subview uiwebview

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

使用 WiX 进行安装升级 - 不使用 WiX 创建的旧安装程序

在厌倦了 Wise For Windows Installer 的景象后,我正在构建我的第一个 WiX 安装程序!

我已经构建了安装程序并且运行良好,但现在我需要让它从我的应用程序的先前版本执行升级。虽然我可以找到很多关于设置 WiX 执行升级的帖子,但我找不到任何信息告诉我当您以前使用其他工具制作安装程序时如何执行此操作。

我也用同样的方法做吗?我是否需要从旧安装程序获取升级代码等?提前谢谢了!

更新:

按照 fletcher 的指示,我使用 dark.exe 从旧安装程序中获取了 UpgradeCode,并将其添加到产品标签的 UpgradeCode 中。我的 WiX 文件的开头现在看起来是这样的......

<Product Id="fcdc6617-e960-46db-8faa-1dc627f250c8" Name="MyProduct"
       Language="1033" Version="1.2.0.5165" Manufacturer="MyCompany" 
       UpgradeCode="{E97A233B-AB49-4B66-B92A-68972F6D72B9}">

    <Package InstallerVersion="200" Compressed="yes" />

<!-- Upgrade from previous version(s) -->
<Property Id="PREVIOUSVERSIONINSTALLED" Secure="yes" />
<Upgrade Id="{E97A233B-AB49-4B66-B92A-68972F6D72B9}">
  <UpgradeVersion Minimum="1.1.0.4605" Maximum="1.2.0.5165"
                  Property="PREVIOUSVERSIONINSTALLED"
                  IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
Run Code Online (Sandbox Code Playgroud)

...但是现在,当我运行此安装程序时,我最终会在目标计算机上得到两个 MyProduct 实例。我哪里错了?

installation wix upgrade

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