小编D.D*_*D.D的帖子

使用ParamStr()获取带双引号的参数

所以我们有一个第三方工具,我们无法重新编译,但它使用这个ParamStr(索引:整数)来获取命令行参数.我已经尝试了我可以在互联网上找到的所有东西,但它不接受双引号字符.我使用了转义字符等,并创建了一个测试应用程序来简化测试过程并将问题归结为此功能.

有没有人通过这个函数通过命令行参数成功传递双引号?

编辑:我在下面发布了我的测试应用程序.processfromcommandline函数来自第三方库.

对此的示例输入将是这样的:

"file1.adb file2.adb -p4THISISAPASSWORD"
Run Code Online (Sandbox Code Playgroud)

密码直接在-p4之后.我们的密码是"加密的",看起来更像这样

file1.adb file2.adb -p4$/.;}{3"aG13Sz/"9@;.'
Run Code Online (Sandbox Code Playgroud)

测试应用程序使用ShowMessage输出它获得的字符串,这样你就可以看到delphi正在做什么.所以我的输入将是一些东西

unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, clipbrd;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FParams:      Boolean;
    FAbort:       Boolean;
    FAppPath:     String;
    FLogPath:     String;
    FSuccess:     Boolean;
    FSourceFile:  String;
    FDestFile:    String;
    FParamCount:  Integer;
    FPassword4:   String;
    FKeyFile4:    String;
    FIVFile4:     String;
    FPassword5:   String;
    FKeyFile5:    String;
    FIVFile5:     String;
    procedure ProcessFromCommandLine;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ProcessFromCommandLine;
var bTo4: boolean; …
Run Code Online (Sandbox Code Playgroud)

delphi

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

将 TObject 转换为 TMenuItem 并检索标题将 & 添加到字符串

所以我下面有一些非常简单的代码。我在多个 onclick 事件中使用此函数来传递 TMenuItems 的标题。

procedure TForm1.BtnClick(Sender: TObject);
begin
 TestFrm.MyVar:= TMenuItem(Sender).Caption;
 InteractiveSchedulerFrm.ShowModal;
end;
Run Code Online (Sandbox Code Playgroud)

然而,这样做的结果是 TestFrm.MyVar 字段最终包含了一个原来不存在的 & 符号,并且它总是位于看似随机的位置。

我通过替换字符串中的所有&符号来临时修复了该问题,但我最好奇是什么导致&符号被放置在字符串中。

例子:

TMenuItem(Sender).Caption = '测试';

TestFrm.MyVar = 'TE&ST' 或 '&TEST' 等

delphi

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

标签 统计

delphi ×2