这是我的问题,我想知道文本的实际长度(以像素为单位)(请注意,在某些字体中,各种字母的长度不同).我将使用它来更好地调整DBGrid中的列宽.
我希望用户能够在程序中手动输入日期时间字段的格式.我有Tedit组件.例如,如果用户输入'HH:nn',那么这是一个有效的日期时间格式字符串,并且所有日期时间组件都应该将format属性更改为this,但如果他输入'asd',则不是.有没有快速的方法来检查这一点,而无需编写自己的功能?
我需要编写一个程序,它将浏览各种长度的字符串,并只选择那些使用我定义的集合中的符号(特别是日文字母)编写的程序.字符串将包含用不同语言(德语,法语,阿拉伯语,俄语,英语等)编写的单词.显然有大量可能的角色.我不知道使用哪种结构?我现在正在使用Delphi 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)
有人可以帮忙吗?
是否可以在 AWS Glue 中抓取使用 CSE-KMS 加密的 S3 文件?我知道 Athena 可以做到这一点,但在 Glue 爬虫中没有找到类似的功能
为 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
背景:我正在尝试向 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.StringToJson和States.Format内部函数的组合首先生成字段输入的字符串化版本Key.$,然后从字符串转换为 JSON。就像是:
{
"TableName.$": "$.TableName",
"Key.$": "States.StringToJson(States.Format('\{\"{}\":\{\"S.$\":\"{}\"\}\}', $.PrimaryKeyName, $.PrimaryKeyValue))"
}
Run Code Online (Sandbox Code Playgroud)
理论上它应该有效,但 AWS Step Functions 似乎对转义双引号不满意?它无法解析上面的定义。
所以我的问题是:
有没有办法让这项工作发挥作用?(通过某种方式转义双引号,或者通过完全不同的方法)
我有以下代码从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)
但是不是字符,而是看到一些完全不同的符号,与日本集无关.任何提示?
我正在尝试更新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) 我正在尝试编写一个程序,它将从通过usb连接的Arduino板上收听串行输入,并将输出发送到串行端口(COM4).但我不知道如何从Delphi的串口获取输入.我需要程序来监听端口,每当输入到来时,它都应该对它作出反应.有什么建议?
delphi ×7
string ×3
unicode ×2
amazon-kms ×1
amazon-s3 ×1
arduino ×1
aws-glue ×1
aws-lambda ×1
caption ×1
column-width ×1
datetime ×1
delphi-2009 ×1
events ×1
font-size ×1
message ×1
port ×1
registry ×1
richedit ×1
serial-port ×1
url ×1
usbserial ×1
utf-8 ×1
windows-7 ×1