Delphi以不同的单元枚举(Delphi Enums in Different Units)
所以我正在使用Delphi来使用SOAP服务,但努力设置枚举值。 以下是枚举声明:
Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif);
一旦导入WSDL,这将在Delphi单元中进行声明。 现在我的应用程序正在使用这个单元,我尝试了下面的选项,但无济于事。
选项1 :(不编译,未声明标识符:'pdf')
uses SOAPAPI_Unit type Extension = SOAPAPI_Unit.Extension; .... procedure TForm1.Button2Click(Sender: TObject); var Ext : Extension; begin Document.Extension := pdf; end;
选项2 :(编译,但我得到一个服务器错误,说对象ref没有设置)
uses SOAPAPI_Unit .... procedure TForm1.Button2Click(Sender: TObject); var Ext : SOAPAPI_Unit.Extension; begin Document.Extension := Ext(0); end;
选项3(在主.pas文件中重新声明Enum,但后来我得到不兼容的类型:'SOAPAPI_Unit.Extension'和'formMain.Extension')
uses SOAPAPI_Unit type Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif); .... procedure TForm1.Button2Click(Sender: TObject); var Ext : Extension; begin Document.Extension := pdf; end;
选项4(编译,但从服务器获取对象引用没有设置错误)
uses SOAPAPI_Unit .... procedure TForm1.Button2Click(Sender: TObject); var Ext : Extension; begin Document.Extension := Ext.pdf; end;
So I'm consuming SOAP services using Delphi, but struggling to set the value of an enum. Below is the enum declaration:
Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif);
This is declared in the unit Delphi imports once you import the WSDL. Now my app is using this unit, and I've tried below options, but to no avail.
Option 1: (Doesn't compile. Undeclared identifier: 'pdf')
uses SOAPAPI_Unit type Extension = SOAPAPI_Unit.Extension; .... procedure TForm1.Button2Click(Sender: TObject); var Ext : Extension; begin Document.Extension := pdf; end;
Option 2: (Compiles, but I get a server error saying object ref not set)
uses SOAPAPI_Unit .... procedure TForm1.Button2Click(Sender: TObject); var Ext : SOAPAPI_Unit.Extension; begin Document.Extension := Ext(0); end;
Option 3 (Re-Declare the Enum in the main .pas file, but then I get Incompatible types: 'SOAPAPI_Unit.Extension' and 'formMain.Extension')
uses SOAPAPI_Unit type Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif); .... procedure TForm1.Button2Click(Sender: TObject); var Ext : Extension; begin Document.Extension := pdf; end;
Option 4 (Compiles, but get object ref not set error from server)
uses SOAPAPI_Unit .... procedure TForm1.Button2Click(Sender: TObject); var Ext : Extension; begin Document.Extension := Ext.pdf; end;
原文:https://stackoverflow.com/questions/41694391
最满意答案
这是用正则表达式解析HTML的危险区域,但是呢。
text.replace(/<(\w*) .*?(\/?)>/g,"<$1$2>")
This is dangerous territory parsing HTML with regex, but what about.
text.replace(/<(\w*) .*?(\/?)>/g,"<$1$2>")
相关问答
更多-
Javascript正则表达式替换并添加找到的所有元素到数组(Javascript Regex Replace And Add All Element Found To An Array)[2022-03-24]
你可以用一颗子弹击中两个目标: var items = []; var re = /((?: {4,}|\t+)(?:.*))/g; textarea.value = textarea.value.replace(re, function ($0, $1) { items.push($1); return 'replacement'; }); 如果你想获得代码块,那么: var codeLines = []; var reMarkers = /\{\{(.*?)\}\}/g; var re ... -
这是用正则表达式解析HTML的危险区域,但是呢。 text.replace(/<(\w*) .*?(\/?)>/g,"<$1$2>") This is dangerous territory parsing HTML with regex, but what about. text.replace(/<(\w*) .*?(\/?)>/g,"<$1$2>")
-
正则表达式javascript-错误(regex javascript- error)[2022-11-23]
您在jQuery对象上调用RegExp测试方法而不是字符串。 将您的条件从: if ((!regex.test(email))) { ... } 至: if ((!regex.test(email.val()))) { ... } 它应该工作。 You are calling the RegExp test method on a jQuery object instead of a string. Change your conditional from: if ((!regex.test(email ... -
正则表达式没有统计。 更好地使用这样的数组 var val = textarea.value; var arr = val.split(/[\n\r]/g); var count = arr.length; 你可以用更少的行和变量压缩它... var count = $('textarea').val().split(/[\n\r]/g).length; regex does not have count. better use array like this var val = textarea.va ...
-
你需要: 使用正则表达式文字来避免双重反斜杠转义速记类(现在, "\."转换为. ) 从模式中删除锚点(即^和$ ) 将全局修饰符添加到正则表达式( /g ) 将String#match()与正则表达式一起使用(如果您不需要捕获组捕获的值,否则,您需要在循环内运行RegExp#exec来收集它们)。 function parseLogs(text) { var re = /([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/g; va ...
-
^=+|=+$ 你可以使用这个。不要忘记添加g和m标志。用``.See demo替换。 http://regex101.com/r/nA6hN9/28 ^=+|=+$ You can use this.Do not forget to add g and m flags.Replace by ``.See demo. http://regex101.com/r/nA6hN9/28
-
您可以在两侧使空格可选: var response = response.replace(/ ?
?/g, '\n'); 另一种选择是使用/ *
*/g或/\s*
\s*/g 。 为清楚起见,我们使用下划线代替空格: 如果您的文字是"a_
_
_b" , /_
_?/g失败,因为第一个匹配会消耗第二个空格(导致"a\n
_b" ),没有领先的空间,第二个
无法匹配。 You can make the spaces ... -
JavaScript正则表达式解释(JavaScript Regex Explanation)[2024-03-27]
请尝试 - Regx限制html标签 - /([\<])([^\>]{1,})*([\>])/i 要么 /<(.|\n)*?>/g 例 Please try - Regx to restrict html tags - /([\<])([^\>]{1,})*([\>])/i or /<(.|\n)*?>/g Example -
似乎是灾难性回溯的一个例子,因为这个表达式: (?:[^ ]+)+ 。 不知道为什么第一个有效,而第二个没有。 你想要的正则表达式是 url = new RegExp("https?://(?:[^ ]+)\\.", "i") // or url = /https?:\/\/(?:[^ ]+)+\./i 和 imgurl = new RegExp("https?://(?:[^ ]+)\\.(?:jpe?g|gif|png)", "i") // or imgurl = /https?:\/\/(?:[^ ...
-
为什么不使用. 匹配每个角色? var message_regex = /^.{10,500}$/; 这可以确保textarea有10到500个字符。 Why just not use the . to match every character? var message_regex = /^.{10,500}$/; This makes sure the textarea has between 10 to 500 characters.