我正在使用COM组件,它暴露了很多Variant
属性,但有时这些值为null.当我尝试将这些值转换为字符串(或其他Delphi类型)时,应用程序会引发如下异常:
无法将类型(Null)的变体转换为类型(String)
但是,如果我使用.net来调用相同的属性并且值为null,则不会引发异常,并且将null值视为空字符串.
我的问题是有一种方法可以从Delphi处理这些空值来避免这些异常吗?
提前致谢.
我正在使用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) 变种总是很有趣,是吗?
我正在研究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(东京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) 我正在从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"的行中.
我怎么解决这个问题?谢谢!
我在gradle/android studio中使用Product Variants来实现以下项目设置:
在我试图实现这个(占位符,多个清单)时,我已经遵循了多个教程,但没有任何作用.
在本教程之后,我做了以下工作: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) 我最近不得不从网站上选择一个 Linux 发行版下载。我面临三个选择:bt-hybrid 版本、iso-hybrid 版本和 webboot 版本。有什么区别?
我有一个变量变量,并将以下范围值传递给它.
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)
有没有办法做到这一点,或者有关于我不知道的变体数组的规则.
我最近尝试用来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 …
我正在尝试通过 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)