小编Red*_*ick的帖子

Pascal Synapse错误处理

我有一些用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)

delphi exception-handling freepascal lazarus

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

在Delphi/FreePascal中解析电子邮件时间戳

使用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偏移.

我是否有必要首先切断并重新排列字符串并进行我自己的短月份名称和补偿的转换?

delphi datetime freepascal

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

Perl:从数组中提取值对

考虑

#!/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,splitunshift.

我错过了什么简洁,优雅的解决方案?


PS我以前使用哈希,但发现%h = (A=>'P', B=>'Q', C=>'R') …

perl while-loop

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

Perl中对象构造函数中命名参数的习惯用法

在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)

oop parameters perl idioms

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

Windows上的Rust安装,用于开发GUI应用程序

TL:DR;

是否可以在不安装完整的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。

UI

我读了一些基本的介绍,并用来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)

windows user-interface rust

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