标签: variants

使用Delphi管理变体中的空值

我正在使用COM组件,它暴露了很多Variant属性,但有时这些值为null.当我尝试将这些值转换为字符串(或其他Delphi类型)时,应用程序会引发如下异常:

无法将类型(Null)的变体转换为类型(String)

但是,如果我使用.net来调用相同的属性并且值为null,则不会引发异常,并且将null值视为空字符串.

我的问题是有一种方法可以从Delphi处理这些空值来避免这些异常吗?

提前致谢.

delphi null delphi-xe variants

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

除了"%s"以外的任何内容与Variant一起使用时,为什么Format会崩溃?

我正在使用SysUtils.Format函数和variant值,我发现只有格式字符串才能使用此函数%s.我检查了有关Format函数的文档,但是没有任何关于如何处理变量值的引用.

考虑这个简单的应用:

{$APPTYPE CONSOLE}

uses
  Variants,
  SysUtils;

procedure TestFormat;
var
  v : Variant;
begin
  v:=100;
  writeln(Format('The VarType of v is %s',[VarTypeAsText(VarType(v))]));
  writeln(Format('The value of v is %s',[v]));//ok

  v:='100';
  writeln(Format('The VarType of v is %s',[VarTypeAsText(VarType(v))]));
  writeln(Format('The value of v is %s',[v]));//ok

  v:=100;
  writeln(Format('The VarType of v is %s',[VarTypeAsText(VarType(v))]));
  writeln(Format('The value of v is %d',[v]));//raise a EConvertError exception EConvertError: Format '%d' invalid or incompatible with argument
end;


begin
  try
     TestFormat;
  except
    on E: Exception …
Run Code Online (Sandbox Code Playgroud)

delphi variants

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

如何判断Delphi变量是否为空字符串?

变种总是很有趣,是吗?

我正在研究D2007中最后一个将其迁移到Delphi XE的遗留应用程序.

在过渡期间,变体已经发生了很大的变化.

这行代码:

if (VarType(Value) = varString) and (Value = '') then 
  Exit;
Run Code Online (Sandbox Code Playgroud)

在D2007中返回True并退出,但在Delphi XE中没有.

我把它改成了这个:

if VarIsStr(Value) and (VarToStr(Value) = '') then
    Exit;
Run Code Online (Sandbox Code Playgroud)

我不相信这是"最好的"方式.Variants单元没有特定的调用来执行此操作,我当然记得这对于过去的人来说是一个问题.但是,搜索显示没有库函数或任何其他可接受的方式.

有"正确"或更好的方式吗?

delphi string delphi-xe variants

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

在Delphi中添加字符串和变体

在Delphi(东京10.2)中添加字符串和变体行为的方式让我感到非常惊讶.有人可以为这个"功能"提供合理的解释,还是我们称之为错误?

function unexpected: string;
var v: Variant;
begin
  result := '3';
  v := 2;
  result := v + result;
  ShowMessage(result);  //displays 5, I expected 23

  result := '3';
  v := 2;
  result := result + '-' + v;
  ShowMessage(result)   //displays -1, I expected 3-2
end;
Run Code Online (Sandbox Code Playgroud)

delphi variants

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

OCaml:变体类型和模块定义之间的循环

我正在从Haskell切换到OCaml,但我遇到了一些问题.例如,我需要正则表达式的类型定义.我这样做:

type re = EmptySet 
    | EmptyWord
    | Symb of char
    | Star of re
    | Conc of re list
    | Or of (RegExpSet.t * bool) ;;
Run Code Online (Sandbox Code Playgroud)

Or中的元素在一个集合(RegExpSet)中,所以我接下来定义它(以及map函数):

module RegExpOrder : Set.OrderedType = 
    struct
      let compare = Pervasives.compare
      type t = re
    end 
module RegExpSet = Set.Make( RegExpOrder )      
module RegExpMap = Map.Make( RegExpOrder ) 
Run Code Online (Sandbox Code Playgroud)

但是,当我做"ocaml [文件名]"时,我得到:

Error: Unbound module RegExpSet
Run Code Online (Sandbox Code Playgroud)

在"re"的定义中的"Or"行.

如果我交换这些定义,也就是说,如果我在重新定义类型之前编写模块定义,我显然会得到:

Error: Unbound type constructor re
Run Code Online (Sandbox Code Playgroud)

在"type t = re"的行中.

我怎么解决这个问题?谢谢!

ocaml module variants

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

产品变体:多种活动

我在gradle/android studio中使用Product Variants来实现以下项目设置:

  1. 两个应用程序,在一个Android工作室项目中80%相似.
  2. 每个应用程序都应该有自己的清单包路径(它们应该基本上像两个独立的应用程序 - 使用它自己的google api和推送键)

在我试图实现这个(占位符,多个清单)时,我已经遵循了多个教程,但没有任何作用.

在本教程之后,我做了以下工作:http: //www.kevinrschultz.com/blog/2014/03/23/using-android-content-providers-with-multiple-package-names/

我的build.gradle:

android {
compileSdkVersion 19
buildToolsVersion '20'

defaultConfig {
    minSdkVersion 10
    targetSdkVersion 19
    versionCode 1
    versionName "1.0"
}

buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

productFlavors {
    app1 {
        packageName "com.test.app1"
        //applicationId "com.test.app1"
    }

    app2 {
        packageName "com.test.app2"
        //applicationId "com.test.app2"
    }
}}
Run Code Online (Sandbox Code Playgroud)

在这里我的清单文件.

的src/main /清单:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<application>
</application>
Run Code Online (Sandbox Code Playgroud)

SRC/APP1 /清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:name="com.test.app1”
        android:allowBackup="true" …
Run Code Online (Sandbox Code Playgroud)

android gradle variants android-studio

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

bt 混合、iso 混合、网络引导;有什么不同?

我最近不得不从网站上选择一个 Linux 发行版下载。我面临三个选择:bt-hybrid 版本、iso-hybrid 版本和 webboot 版本。有什么区别?

linux variants

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

从2D变体写入第二维到Range,而不在VBA中循环

我有一个变量变量,并将以下范围值传递给它.

Option Base 1
Dim varEmployees As Variant

varEmployees = Range("A1:B5").Value
Run Code Online (Sandbox Code Playgroud)

此2D变体现在在第一维中具有雇员ID,在第二维中具有雇员名称.所以我们得到类似的东西.

varEmployees(1,1) = 1234    varEmployees(1,2) = John Doe
varEmployees(2,1) = 5678    varEmployees(2,2) = Jane Smith
varEmployees(3,1) = 9012    varEmployees(3,2) = Mary Major
varEmployees(4,1) = 3456    varEmployees(4,2) = Judy Stiles
varEmployees(5,1) = 7890    varEmployees(5,2) = Richard Miles
Run Code Online (Sandbox Code Playgroud)

我想在不使用循环的情况下将第二维仅写回范围但是当我使用以下代码时...

Range("D1:D5") = varEmployees
Run Code Online (Sandbox Code Playgroud)

我只得到实际结果下显示的第一维,但我想要的是我想要的结果(仅第二维).

Actual Results       Desired Results
--------------       ---------------
    1234             John Doe
    5678             Jane Smith
    9012             Mary Major
    3456             Judy Stiles
    7890             Richard Miles
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,或者有关于我不知道的变体数组的规则.

excel vba range variants

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

运行bowtie2期间breseq出错

我最近尝试用来breseq分析一些细菌测序数据.但是,当breseq用于bowtie2将原始数据与参考基因组对齐时,我遇到了致命错误.

这是我得到的错误的关键部分:
+++ NOW PROCESSING Read alignment to reference genome [system] bowtie2-build -q test_breseq/data/reference.fasta test_breseq/02_reference_alignment/reference [system] bowtie2 -t -p 4 --local -L 31 --ma 1 --mp 3 --np 0 --rdg 2,3 --rfg 2,3 --ignore-quals -k 2000 -i S,1,0.25 --score-min L,0,0.9 --reorder -x test_breseq/02_reference_alignment/reference -U test_breseq/01_sequence_conversion/MRSA_10C.1.converted.fastq -S test_breseq/02_reference_alignment/MRSA_10C.1.stage1.sam --un test_breseq/02_reference_alignment/MRSA_10C.1.stage1.unmatched.fastq Error: the match penalty is greater than 0 (1) but the --score-min function can be less than or equal to zero. Either let the match …

bioinformatics sequencing genome variants

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

使用 Shopify API Python,添加带有价格和“requires_shipping”的新产品:False

我正在尝试通过 Python Shopify API 添加新产品。我知道如何添加标题、正文和图片,但我在添加价格时遇到问题,我需要 'requires_shipping': False。我在任何地方都找不到如何实现这一目标。

这是我到目前为止所拥有的。

import shopify    
API_KEY = 'dsfsdsdsdsdsad'
PASSWORD = 'sadsdasdasdas'

shop_url = "https://%s:%s@teststore.myshopify.com/admin" % (API_KEY, PASSWORD)
shopify.ShopifyResource.set_site(shop_url)



path = "audi.jpg"

new_product = shopify.Product()
new_product.title = "Audi pictures test "
new_product.body_html = "body of the page <br/><br/> test <br/> test"

###########this part is so far good. but the bottom part is not working#### 

variant = shopify.Variant(price=9.99)) # this does not work
new_product.variant() # this does not work
variant_2 = shopify.Variant(requires_shipping=False) #this does not work
new_product.variant_2() …
Run Code Online (Sandbox Code Playgroud)

python api shopify variants

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