小编Tof*_*nov的帖子

Delphi 7中文本/标题的宽度(以像素为单位)

这是我的问题,我想知道文本的实际长度(以像素为单位)(请注意,在某些字体中,各种字母的长度不同).我将使用它来更好地调整DBGrid中的列宽.

delphi column-width font-size caption

11
推荐指数
2
解决办法
2万
查看次数

如何在Delphi中检查字符串是否是有效的DateTime格式字符串

我希望用户能够在程序中手动输入日期时间字段的格式.我有Tedit组件.例如,如果用户输入'HH:nn',那么这是一个有效的日期时间格式字符串,并且所有日期时间组件都应该将format属性更改为this,但如果他输入'asd',则不是.有没有快速的方法来检查这一点,而无需编写自己的功能?

delphi string datetime datetime-format

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

在Delphi 7中使用Unicode字符串

我需要编写一个程序,它将浏览各种长度的字符串,并只选择那些使用我定义的集合中的符号(特别是日文字母)编写的程序.字符串将包含用不同语言(德语,法语,阿拉伯语,俄语,英语等)编写的单词.显然有大量可能的角色.我不知道使用哪种结构?我现在正在使用Delphi 7.任何人都可以建议如何编写这样的程序?

delphi string unicode internationalization

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

Registry ReadString方法在Delphi 7的Windows 7中不起作用

下面的代码示例用于返回我之前的windows id,但现在它不起作用,并返回空字符串,dunno为什么.

  function GetWindowsID: string;
  var
    Registry: TRegistry;
    str:string;
  begin
    Registry := TRegistry.Create(KEY_WRITE);
    try
      Registry.Lazywrite := false;
      Registry.RootKey := HKEY_LOCAL_MACHINE;
   //   Registry.RootKey := HKEY_CURRENT_USER;
      if CheckForWinNT = true then
       Begin
       if not Registry.OpenKeyReadOnly('\Software\Microsoft\Windows NT\CurrentVersion') then showmessagE('cant open');
       end
      else
        Registry.OpenKeyReadOnly('\Software\Microsoft\Windows\CurrentVersion');
      str := Registry.ReadString('ProductId');
      result:=str;
      Registry.CloseKey;
    finally
      Registry.Free;
    end; // try..finally
  end;
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

delphi registry windows-identity windows-7

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

AWS Glue 使用 AWS KMS 读取 S3 文件客户端加密

是否可以在 AWS Glue 中抓取使用 CSE-KMS 加密的 S3 文件?我知道 Athena 可以做到这一点,但在 Glue 爬虫中没有找到类似的功能

amazon-s3 amazon-kms aws-glue

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

AWS Lambda@Edge 的缓存选项

为 AWS Lambda@Edge 实施本地缓存的最佳方法是什么?

上下文如下:我们在 CloudFront 中有 lambda@edge 触发器,需要从公共互联网检索公钥。该密钥定期轮换​​。从 lambda@edge 到公共互联网的公开调用会带来延迟损失,因此我们理想情况下希望缓存数据。当然,我们可以使用 ElastiCache 或 DynamoDB 作为缓存层,但这会抵消在边缘位置运行 lambda 的好处,因为它需要与其中一个区域的资源进行通信。

我能想到的一种方法是将数据存储在启用了 CloudFront 分发的静态网站 S3 存储桶中。如果我理解正确的话,这意味着该文件也将出现在 CloudFront 上与 lambda 本身相同的边缘位置。然后,Lambda 可以调用静态网站并从边缘缓存中检索该文件。这是一个有效的模式吗?有更好的解决方案吗?

amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge

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

在 AWS Step Functions 中使用动态键生成 JSON 对象

背景:我正在尝试向 AWS Step Functions 中的状态机
添加步骤。DynamoDB:GetItemGetItem API 接受以下格式的输入:

{
  "TableName": "MyDynamoDBTable",
  "Key": {
    "Column": {
      "S": "MyEntry"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

其中“Column”是主键名称,“MyEntry”是主键值。问题是我希望能够使用 JSON 路径引用动态指定主键名称和值。

不幸的是,AWS 不允许我传递主键名称(“Column”)的值引用。所以我不能做类似的事情

{
  "TableName": "MyDynamoDBTable",
  "Key.$": {
    "$.ColumnName": {
      "S": "MyEntry"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题:

我能想到的唯一解决方法(虽然有点难看)是使用States.StringToJsonStates.Format内部函数的组合首先生成字段输入的字符串化版本Key.$,然后从字符串转换为 JSON。就像是:

{
  "TableName.$": "$.TableName",
  "Key.$": "States.StringToJson(States.Format('\{\"{}\":\{\"S.$\":\"{}\"\}\}', $.PrimaryKeyName, $.PrimaryKeyValue))"
  }
Run Code Online (Sandbox Code Playgroud)

理论上它应该有效,但 AWS Step Functions 似乎对转义双引号不满意?它无法解析上面的定义。

所以我的问题是:
有没有办法让这项工作发挥作用?(通过某种方式转义双引号,或者通过完全不同的方法)

amazon-web-services aws-step-functions

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

在Delphi 2009中从文本文件中读取unicode字符

我有以下代码从UTF-8格式的文本文件中读取日文汉字字符,然后将其加载到备忘录中.

Var F:textFile;
S:string;
Begin
 AssignFile(F,'file.txt');
 Reset(F);
 While not EoF(F) do
 Begin
  Readln(F,S);
  Memo1.Lines.Add(S);
 End;
 CloseFile(F);
End;
Run Code Online (Sandbox Code Playgroud)

但是不是字符,而是看到一些完全不同的符号,与日本集无关.任何提示?

delphi string unicode utf-8 delphi-2009

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

检测点击RichEdit中的URL

我正在尝试更新RichEdit,以便它检测URL并允许单击它以在浏览器中打开.检测URL很简单,我只需使用以下代码来自http://www.scalabium.com/faq/dct0146.htm

mask := SendMessage(MNote.Handle, EM_GETEVENTMASK, 0, 0);
  SendMessage(MNote.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
  SendMessage(MNote.Handle, EM_AUTOURLDETECT, Integer(True), 0); 
Run Code Online (Sandbox Code Playgroud)

但第二部分对我不起作用.他们提供以下代码来捕获EN_LINK消息并对其进行处理:

type
  TForm1 = class(TForm)
  protected
    procedure WndProc(var Message: TMessage); override;
  end;
...

procedure TForm1.WndProc(var Message: TMessage);
var
  p: TENLink;
  strURL: string;
begin
  if (Message.Msg = WM_NOTIFY) then
  begin
    if (PNMHDR(Message.LParam).code = EN_LINK) then
    begin
      p := TENLink(Pointer(TWMNotify(Message).NMHdr)^);
      if (p.msg = WM_LBUTTONDOWN) then
      begin
        SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, LongInt(@(p.chrg)));
        strURL := RichEdit1.SelText;
        ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL);
      end
    end
  end;

  inherited;
end; …
Run Code Online (Sandbox Code Playgroud)

delphi url events message richedit

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

在Delphi 7上听串口

我正在尝试编写一个程序,它将从通过usb连接的Arduino板上收听串行输入,并将输出发送到串行端口(COM4).但我不知道如何从Delphi的串口获取输入.我需要程序来监听端口,每当输入到来时,它都应该对它作出反应.有什么建议?

delphi port serial-port arduino usbserial

5
推荐指数
2
解决办法
1万
查看次数