我有一些用Lazarus / FreePascal编写的使用Synapse IMAPSend库单元的代码。我尝试通过SSL(IMAPS)登录到IMAP服务器,但调用Login失败。
我试过检查异常-没有抛出异常。
除了与适当的服务器和端口的TCP三向握手之外,Wireshark没有显示任何内容。
这是代码
function GetImapResponse(host, port, user, pass:String): String;
var
response: String = '';
imap: TIMAPSend;
no_unseen: integer;
begin
imap := TIMAPSend.create;
try
imap.TargetHost := host; //'10.0.0.16';
imap.TargetPort := port; //'993';
imap.UserName := user; //'red';
imap.Password := pass; //'********';
imap.AutoTLS := false;
imap.FullSSL := true;
response := response + 'IMAP login to '+user+'@'+host+':'+port+' ... ';
if imap.Login then
begin
response := response + 'Logged in OK. ';
// How many …Run Code Online (Sandbox Code Playgroud) 使用FreePascal(FPC)2.6.2我想将一些时间戳字符串从电子邮件消息转换为DateTime值(使用Synapse从IMAP服务器检索IMAPsend):
Date: Thu, 1 Aug 2013 20:07:43 -0400
Run Code Online (Sandbox Code Playgroud)
从我读过的StrToDateTime()和TFormatSettings,我没有看到一个办法直接做到这一点.他们通常期望1/8/2013 20:07:47类似于dd/mm/yyyy&等格式的字符串,hh:mm:ss并且无法处理UTC偏移.
我是否有必要首先切断并重新排列字符串并进行我自己的短月份名称和补偿的转换?
考虑
#!/usr/bin/perl
use strict;
use warnings;
while(<DATA>) {
my($t1,$t2,$value);
($t1,$t2)=qw(A P); $value = $1 if /^$t1.*$t2=(.)/;
($t1,$t2)=qw(B Q); $value = $1 if /^$t1.*$t2=(.)/;
($t1,$t2)=qw(C R); $value = $1 if /^$t1.*$t2=(.)/;
print "$value\n";
}
__DATA__
A P=1 Q=2 R=3
B P=8 Q=2 R=7
C Q=2 P=1 R=3
Run Code Online (Sandbox Code Playgroud)
我想用一个优雅的循环代替存储在数组(或其他结构)中的$ t1,$ t2值的替换重复
my @pairs = qw (A,P B,Q C,R);
my @pairs = qw (A P B Q C R);
Run Code Online (Sandbox Code Playgroud)
我已经没有结合在一个简短的尝试很成功while,split和unshift.
我错过了什么简洁,优雅的解决方案?
PS我以前使用哈希,但发现%h = (A=>'P', B=>'Q', C=>'R') …
在Perl中,如果我想在对象构造函数中使用命名参数,如果我希望进行一些验证,我的代码似乎有点笨拙.
sub new {
my $class = shift;
my $self = {};
my %args = @_;
foreach my $argname (keys %args) {
if ($argname eq 'FOO') { $self->{$argname} = $args{$argname}; }
elsif ($argname eq 'BAR') { $self->{$argname} = $args{$argname}; }
elsif ($argname eq 'BAZ') { $self->{$argname} = $args{$argname}; }
…
else { die "illegal argument $argname\n"; }
}
bless $self;
return $self;
}
Run Code Online (Sandbox Code Playgroud)
首先,有一个临时的hash(%args)似乎有点笨拙.其次,整个if链条似乎冗长乏味.
后者可以简化为
if ('-FOO-BAR-BAZ-'=~m/-$argname-/) { $self->{$argname} = $args{$argname} }
else { die "..."; …Run Code Online (Sandbox Code Playgroud) 是否可以在不安装完整的MinGW工具链(也不与MS等效)的情况下使用Rust在Win 10(64)上编写GUI程序?
补充问题:
-如果没有,我应该继续安装MinGW吗?
-Windows 10周年更新中的 GNUish有什么改变吗?
15分钟前,我看到 Rust是最受欢迎的编程语言。
我读了
基本使用GNU构建不需要额外的软件安装。
Rust对GNU ABI的支持更加成熟,推荐用于典型用途。
所以我下载Windows (GNU ABI †) (.msi) 64-bit到运行Windows 10的PC。
我读了一些基本的介绍,并用来rustc编译Hello World!并运行正常。然后,我阅读cargo并重组了buit并使用该代码运行了相同的代码。
然后我搜索Rust GUI并找到Kiss_UI
Rust的一个简单UI界面
所以我做了一个cargo new Hello_GUI --bin并添加了
[dependencies.kiss-ui]
git = "https://github.com/cybergeek94/kiss-ui"
Run Code Online (Sandbox Code Playgroud)
到Cargo.toml
我从该网站剪切了一个简单的示例并将其粘贴到main.rs中
然后我跑了cargo run --verbose。它做了
Updating git repository `https://github.com/cybergeek94/kiss-ui`
Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading iup-sys v0.0.3
Downloading libc v0.2.14
Downloading libc v0.1.12
Compiling libc v0.1.12
Run Code Online (Sandbox Code Playgroud)
...
warning: crate `Hello_GUI` …Run Code Online (Sandbox Code Playgroud) delphi ×2
freepascal ×2
perl ×2
datetime ×1
idioms ×1
lazarus ×1
oop ×1
parameters ×1
rust ×1
while-loop ×1
windows ×1