小编Mar*_*lot的帖子

更改Sysem.Variants.VarToWideStr的区域设置格式

我的应用程序上的第三方组件(FastReports)广泛使用System.Variants.VarToWideStr函数,该函数很好,但它忽略了我需要该应用程序使用的区域设置。

例:

FormatSettings.ShortDateFormat := 'dd/mm/yyyy';
ShowMessage(VarToWideStr(Date));
FormatSettings.ShortDateFormat := 'yyyy/mm/dd';
ShowMessage(VarToWideStr(Date));
Run Code Online (Sandbox Code Playgroud)

此代码始终返回相同的字符串,而忽略了我指示要使用的应用程序的区域设置。

您是否知道另一种更改应用程序(具体是VarToWideStr)将要使用的区域设置的方法?

delphi date-formatting delphi-10.1-berlin

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

在 SQL Server 中评估“value1 与 value2 不不同”的最佳方法

SQL Server 是否有与 Ansi SQL 运算符等效的运算符:IS DISTINCT FROM/IS NOT DISTINCT FROM?

我知道我可以替换:

value1 is not distinct from value2
Run Code Online (Sandbox Code Playgroud)

和 :

(value1 = value2) or (value1 is null and value2 is null)
Run Code Online (Sandbox Code Playgroud)

或者 :

coalesce(value1, -1) = coalesce(value2, -1)
Run Code Online (Sandbox Code Playgroud)

但是这些选项会阻止引擎使用索引,那么SQL Server是否有特定的运算符来检查这种比较?

谢谢。

sql sql-server where-clause sql-server-2014 sql-null

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

有 TCaptions 的 StringHelper 吗?

我可以添加一个单元来提供 StringHelper 吗TCaption?

使用Edit1.Text.Trim,等比,等Edit1.Text.ToInteger简洁得多。Trim(Edit1.Text)StrToInt(Edit1.Text)

delphi delphi-10.4-sydney

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

我无法使用 TIdIMAP4 仅检索未读消息

我正在尝试使用 IMAP 检索所有未读电子邮件,并且我似乎可以连接并找到那些未读邮件(例如,我可以看到 SearchResult 返回与我的 3 个当前未读邮件相对应的 3 个项目),但是 IMAP .Retrieve 调用总是返回 false,不检索它们中的任何一个。

您是否看到我的代码中必须缺少什么?

procedure TForm1.btnUnreadMessagesClick(Sender: TObject);
var i: integer;
    SearchInfo: array of TIdIMAP4SearchRec;
    MSG: TIdMessage;
begin
  Memo1.Lines.Clear;

  IMAP.Host := 'outlook.office365.com';
  IMAP.Port := 993;
  IMAP.Username := 'xxxxx@acme.com';
  IMAP.Password := 'xxxxx';

  SSL.Host := IMAP.Host;
  SSL.Port := IMAP.Port;
  SSL.Destination := SSL.Host + ':' + IntToStr(SSL.Port);
  SSL.MaxLineLength := MaxInt;

  IMAP.IOHandler := SSL;
  IMAP.UseTLS := utUseImplicitTLS;

  IMAP.Connect;
  IMAP.SelectMailBox('INBOX');

  SetLength(SearchInfo, 1);
  SearchInfo[0].SearchKey := skUnseen;
  IMAP.UIDSearchMailBox(SearchInfo);

  for i := 0 to High(IMAP.MailBox.SearchResult) do begin
    MSG := …
Run Code Online (Sandbox Code Playgroud)

delphi imap indy delphi-10.1-berlin

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

如何同时按下多个 TSpeedButton?

我试图在 TFlowPanel 上使用多个 TSpeedButton 来显示用户可以选择的选项列表。这就是我创建这些按钮的方式:

  procedure FillOptions(ButtonPanel: TFlowPanel; Options: TStrings; Action: TNotifyEvent);
  var Option: string;
      Button: TSpeedButton;   
  begin
    for Option in Options do begin
      Button:= TSpeedButton.Create(ButtonPanel);
      Button.Caption := Option;
      Button.Width := Canvas.TextWidth(Option) + 20;
      Button.GroupIndex := 99;
      Button.AllowAllUp := True;
      Button.OnClick := Action;
      Button.Parent := ButtonPanel;
    end;
  end;
Run Code Online (Sandbox Code Playgroud)

问题是我无法选择多个选项。当我单击一个按钮时,它会下降,但之前选择的按钮会上升。

我忘记设置什么以便可以同时按下多个按钮?

谢谢。

delphi delphi-10.4-sydney

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

如何在一条指令中创建带有已定义元素的字符串数组?

如何使用已定义的元素创建字符串数组?例如我想做:

var myArray : Tarray<string>;
.....
myArray := ['aaa','bbb'];
Run Code Online (Sandbox Code Playgroud)

像这样的东西,在一行中初始化数组

delphi delphi-xe2

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

列“Buy.title”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中

执行此 SQL 时出现错误:

列“Buy.title”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中

查询语句:

IF(@sal IS NOT NULL AND @title IS NOT NULL)
BEGIN
    SELECT title,type1, SUM(tedat) 
    FROM Buy
    WHERE(@sal = YEAR(tarikh) AND @title = title)       
END
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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