我正在尝试创建一个Delphi XE2函数,通过VIES的SOAP服务检查增值税号:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
当我使用上面的URL使用Delphi X2的WSDL导入器获取默认值时,我收到以下错误:无法加载WSDL文件/位置:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl.错误[未找到请求的标头 - URL:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl - SOAPAction:""
我在做什么?
我可以在Console Delphi应用程序中使用DataModule表单吗?
我尝试将现有的单元/表单包含在uses子句中的控制台Delphi应用程序中,但DataModule1被解析为nil(未初始化).
我正在使用Delphi XE3.我有一个JSON流,其中一个对象可以为null.也就是说,我可以收到:
"user":null
Run Code Online (Sandbox Code Playgroud)
要么
"user":{"userName":"Pep","email":"pep@stackoverflow.com"}
Run Code Online (Sandbox Code Playgroud)
我想区分这两种情况,我尝试使用这段代码:
var
jUserObject: TJSONObject;
jUserObject := TJSONObject(Get('user').JsonValue);
if (jUserObject.Null)
then begin
FUser := nil;
end else begin
FUser := TUser.Create;
with FUser, jUserObject do begin
FEmail := TJSONString(Get('email').JsonValue).Value;
FUserName := TJSONString(Get('userName').JsonValue).Value;
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果我把一个断点排成一行if (jUserObject.Null) then begin并且我将鼠标放在jUserObject.Null它上面说jUserObject.Null = True是否"user":null,它说jUserObject.Null = False是否"user":{"userName":"Pep","email":"pep@stackoverflow.com"}
但是,如果我使用调试器进入该行,jUserObject.Null将调用以下XE3库代码:
function TJSONAncestor.IsNull: Boolean;
begin
Result := False;
end;
Run Code Online (Sandbox Code Playgroud)
所以,我总是得到False我if就算一句,"user":null.
我想我总是有一个解决方法,即捕获在执行"user":null和Get('email').JsonValue执行时引发的异常,以便区分值是否为null,但这看起来并不那么优雅.
如何判断JSON对象在JSON流中是否具有空值?
在PayPal(沙盒)中,我定义了一个日语用户,其名字和姓氏带有日文字符.
但是,我收到的IPN通知使用charset = windows-1252进行编码.实际上,这是从Paypal收到的HTTP请求中的参数之一.
我想用他/她的名字问候用户,但由于我似乎收到的不是Unicode,我会发送垃圾字符而不是付款人姓名.
有没有办法让Paypal的IPN通知以Unicode发送给我的监听器?
我有一个Delphi应用程序,它使用Indy IdSMTP对象向smarthost发送电子邮件.
我想使用带有SMTP接口的Amazon SES服务.根据http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html,我需要使用TLS连接.
我不确定我应该将哪个值用于IdSMTP对象的UseTLS属性,然后应该在IOHandler中指定什么.
在Delphi中使用Amazon SES有直接的方法吗?目前我希望能够只发送短信,但将来我可能需要发送HTML电子邮件.
我想静态链接C++ Builder源代码中的Delphi函数.我将.pas文件添加到C++ Builder项目中.我尝试了以下声明:
在德尔福:
procedure SayHi; stdcall;
Run Code Online (Sandbox Code Playgroud)
在C++ Builder中:
extern "C" {
void __stdcall SayHi();
}
Run Code Online (Sandbox Code Playgroud)
所有模块编译正常,但当我链接它时,我收到以下错误:
[ilink64 Error] Error: Unresolved external 'SayHi' referenced from C:\DEV\PACKSWAP\WIN64\DEBUG\MAIN.O
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我试图使用这里描述的 Castalia的内联变量声明.
以下是上述链接中的摘录:
内联变量声明 Castalia提供内联变量声明.在代码的主体中,您可以声明变量,并且只要按空格键,Castalia就会自动将其添加到函数或过程的变量声明部分,您在主体中键入的声明将被引用替换到变量.
但是,它似乎对我不起作用.例如,如果我myVar: integer在此代码后按空格键:
procedure test;
begin
myVar: integer
end;
Run Code Online (Sandbox Code Playgroud)
我没有自动获得(实际上没有任何反应):
procedure test;
var
myVar: integer;
begin
myVar
end;
Run Code Online (Sandbox Code Playgroud)
似乎没有被任何具体CASTALIA设置启用/禁用CASTALIA - > CASTALIA选项用于在线变量和Embarcadero文件没有任何提及任何设置.
Castalia内联变量声明如何工作?
delphi ×6
amazon-ses ×1
c++builder ×1
delphi-xe2 ×1
delphi-xe8 ×1
indy ×1
json ×1
paypal-ipn ×1
smtp ×1
soap ×1