小编tpa*_*ale的帖子

mongo shell脚本不会让我包含"use <database>"

Windows XP机器上的32位mongo 2.0.1

//script filename: test.js  (one line shell script file to store a person)
db.cTest.save({Name: "Fred", Age:21});
Run Code Online (Sandbox Code Playgroud)

通过输入以下2个shell命令对数据库dbTest运行:

    > use dbTest
    switched to dbTest
    > load("test.js")
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

但是,如果我尝试在脚本中包含"use"语句,它将失败:

//script filename: test.js  (including "use" statement)
use dbTest;
db.cTest.save({Name: "Fred", Age:21});
Run Code Online (Sandbox Code Playgroud)

失败,错误消息如下:

    > load("test.js")
    SyntaxError: missing ; before statement
    Mon Dec 19 11:56:31: Error: error loading js file temp.js (shell):1
Run Code Online (Sandbox Code Playgroud)

添加或删除分号到test.js似乎并不重要.

那么如何将"use"指令放入mongo shell脚本中呢?

shell scripting mongodb

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

在VBA中无限和超越

这篇文章是关于.NET NaN和Inifinite值传递回Excel 2010 VBA.

我使用不受我控制的C#方法(显然)可以返回.NET NaN或Neg,Pos Infinity.VBA中的结果很奇怪(比通常更奇怪),而我能够安全地处理这种情况的唯一方法是一个不优雅的三字符串比较"-1.#IND"或"-1.#INF"或"1.#INF".

有没有更好的办法?

如果你好奇,我已经在这里记录了奇怪的部分.(这些例子是针对NaN的,但对于pos或neg infinity来说也是如此.)

double  dVal  =  CSharpMethodReturningDouble()  ' via .NET assembly / COM interop
variant vVal  =  CSharpMethodReturningDouble()  ' via .NET assembly / COM interop
Run Code Online (Sandbox Code Playgroud)

如果C#方法返回double.NaN,那么我们(在immed窗口中):

?dVal               
 -1.#IND            
?vVal                
 -1.#IND             
Run Code Online (Sandbox Code Playgroud)

持有NaN的(盒装)变体对数字测试为正,type = double

?IsNumeric(vVal) 
 True
?TypeName(vVal)
 Double
Run Code Online (Sandbox Code Playgroud)

比较(盒装)变体NaN的工作,但你得到的结果相反.对(未装箱的)双打进行比较会导致溢出异常

?vVal=1          '<== NaN comparisons should always return false
 True               
?vVal=0          '<== that's not what you get with -1.#IND
 True               
?dVal=0          '<== strangely, the same comparison on the unboxed double fails
 (OverFlow Exc)
Run Code Online (Sandbox Code Playgroud)

(盒装)变量的操作导致溢出异常(未装箱的)操作加倍工作(并返回-1.#IND,如预期的那样)

?vVal * …
Run Code Online (Sandbox Code Playgroud)

.net excel vba excel-vba

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

用户定义的函数不重新计算

我最近获得了一个大的,稳定的XLSM文件,并将其拆分为XLAM和XLSX.XLSX调用中的数千个单元(udfs)在XLAM中起作用,每个这样的udf都以"Application.Volatile"语句开头(过度杀戮,强制重新计算).

XLSX不会通过Ctrl-Alt-Shift F9重新计算F9,也不会通过Application.CalculateFull重新计算Cell.Calculate.XLSX单元格只是"死"......但是......如果我点击F2编辑公式然后点击ENTER,我可以逐个重新唤醒它们.以这种方式重新唤醒的细胞似乎保持清醒,之后通常会重新调整.

有没有人遇到过这种奇怪的行为,是否还有其他方法可以强制Excel从头开始重建calc图,我应该尝试一下?

如果重要的话需要另外注意:我通过File Open打开了XLAM和XLSX,并且没有使用File ... Options ... Addins route安装XLAM - 因为过去我这样做了,分钟你"取消选中"并安装了XLAM,然后所有的UDF引用都被完整的路径名链接取代 - 非常难看.或者,如果有人可以概述安装XLAM插件的解决方法,但不会在任何地方创建断开的链接,我将继续使用它.

excel vba xlsx user-defined-functions xlsm

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

Excel 2010 Redim Preserve崩溃

通过在全新的工作簿中输入以下内容,我能以某种方式崩溃Excel 2010:

private sub foo
    redim v(,1 to 3)
Run Code Online (Sandbox Code Playgroud)

好吧,你不太可能打字......但这是真正发生的事情:

private sub foo
    dim v(1 to N, 1 to M)
    ...
    M = New_Value
    redim preserve v(,1 to M)  ' seemed reasonable ... then CRASH !!!
Run Code Online (Sandbox Code Playgroud)

有趣的是,VBA要求你明确地使用2D redim保留的第一个参数(因为你不允许改变第一维).但是,如果对简单语法错误的惩罚是一次严重的崩溃,那就不好笑了.这是一个环境相当干净的IT部门(没有安装插件,在IDE中启动空项目窗格),"redim v(,1到M)"也崩溃了我邻居的机器 - 所以这不仅仅是我.

我想知道这种行为是否会与其他人一起发生,而且我发布它是为了防止其他人浪费时间重建我的工作簿,直到我确定了这个bug.

excel vba excel-vba

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

有效地,没有科学记数或尾随零的双字符串

这个例程被称为无数次,以创建充满数字的大型csv文件.有没有更有效的方法来实现这一目标?

    static std::string dbl2str(double d)
    {
        std::stringstream ss;
        ss << std::fixed << std::setprecision(10) << d;              //convert double to string w fixed notation, hi precision
        std::string s = ss.str();                                    //output to std::string
        s.erase(s.find_last_not_of('0') + 1, std::string::npos);     //remove trailing 000s    (123.1200 => 123.12,  123.000 => 123.)
        return (s[s.size()-1] == '.') ? s.substr(0, s.size()-1) : s; //remove dangling decimal (123. => 123)
    }
Run Code Online (Sandbox Code Playgroud)

c++ stringstream

11
推荐指数
2
解决办法
6640
查看次数

c#enumerable class - 与VBA兼容

任何人都可以告诉我如何编写C#可枚举类,以便Excel VBA中的"for each"构造正常工作吗?我尝试了一个名为People的测试类,它实现了IEnumerable并包含一个Person对象数组."foreach"构造在C#中运行良好,但在VBA中我只能循环使用老式的方式.

这个VBA代码工作得很好:

Dim P As Person
Dim PP As New People

For i = 0 To PP.Count - 1
    Set P = PP(i)
    Debug.Print P.firstName + " " + P.lastName
Next i
Run Code Online (Sandbox Code Playgroud)

但这在运行时失败("对象不支持此属性或方法"):

For Each P In PP
    Debug.Print P.firstName + " " + P.lastName
Next P
Run Code Online (Sandbox Code Playgroud)

下面是C#代码(在VS 2008中可见的已编译COM,用于Excel VBA - Office 2010):

using System;
using System.Collections;
using System.Runtime.InteropServices;

public class Person
{
    public Person(string fName, string lName)
    {
        this.firstName = fName;
        this.lastName = lName;
    }
    public string …
Run Code Online (Sandbox Code Playgroud)

.net c# c#-to-vb.net

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

XLAM/XLA Addins:还有更好的方法吗?

这篇文章是关于安装XLAM而不创建链接.(每个人都讨厌链接).考虑一下琐碎的插件:

    Public Function UDF_HELLO(x)
        UDF_HELLO = "Hello " & x
    End Function
Run Code Online (Sandbox Code Playgroud)

将此代码和其他内容放入模块中并在桌面上保存为"Hello.xlam"(而不是默认的excel addins文件夹中).接下来,在HELLO.XLAM仍处于打开状态时,使用该公式创建一个新的XLSX工作簿

      =UDF_Hello("world")
Run Code Online (Sandbox Code Playgroud)

在单元格A1中,它只在该单元格中显示"Hello world".保存工作簿并退出Excel.现在,如果您在没有XLAM的情况下重新打开工作簿,Excel将会抱怨"链接到其他来源......".无论您单击"更新"还是"不更新",Excel都会在单元格A1中修改公式,如下所示:

    ='C:\Documents and Settings\tpascale\Desktop\Hello.xlam'!UDF_Hello("world")
Run Code Online (Sandbox Code Playgroud)

通常这种"强制连接"是不可取的.在我的计算环境中有很多临时分析,对我们一起解决当天问题的每个XLAM强加安装方案是没有意义的.我只是想向用户分发XLAM文件,并让这些用户在需要时打开它们,而不必担心会导致公式被破坏的最轻微错误步骤.

题:

有没有办法指示Excel永远不构建UDF的外部链接,只是在加载UDF时使用它们,否则返回#VALUEs?

excel vba excel-vba

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

C#片段需要复制VBA Like运算符

我正在转换包含LIKE运算符的VBA代码,如

    dim sToken as String
    if sToken Like "(*,*)" then ...
Run Code Online (Sandbox Code Playgroud)

在所有情况下,模式仅使用匹配任何字符串(包括空字符串)的*通配符.VBA Like运算符只产生一个真/假结果,因此可以进一步解析随后的VBA代码,并在匹配时拔出匹配的子字符串.

如果有人可以提供C#片段来测试相同类型的简单通配符匹配,我将非常感激.如果片段也产生匹配的子串 - 甚至更好.

c# regex vba

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

发送IL以调用Math函数

C#调用

Math.Pow(2,3);
Run Code Online (Sandbox Code Playgroud)

在ILDASM中:

ldc.r8   2.
ldc.r8   3.
call     float64[mscorlib]System.Math::Pow(float64, float64)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何通过ILGenerator发出该调用语句吗?谢谢.

.net il cil

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

C#字节数组为字符串,反之亦然

我有一些C++代码通过STL字符串和文本i/o将字节值保存到文件中,并且对如何在C#中执行此操作感到困惑.

首先,我将字节数组转换为字符串并将每个数组存储为文本文件中的一行:

 StreamWriter F
 loop
 {
   byte[] B;       // array of byte values from 0-255 (but never LF,CR or EOF)
   string S = B;   // I'd like to do this assignment in C# (encoding? ugh.) (*)
   F.WriteLine(S); // and store the byte values into a text file
 }
Run Code Online (Sandbox Code Playgroud)

稍后...我想反转步骤并取回原始字节值:

  StreamReader F;   
  loop
  {
    string S = F.ReadLine();   // read that line back from the file
    byte[] B = S;              // I'd like to convert back to byte array (*)
  } …
Run Code Online (Sandbox Code Playgroud)

c#

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