gpt4 book ai didi

delphi - 这段代码对字符串进行 un-camel-case 有什么问题?

转载 作者:行者123 更新时间:2023-12-03 18:15:29 25 4
gpt4 key购买 nike

这是我尝试解决 About.com Delphi challenge to un-camel-case a string 的尝试.

unit challenge1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
check = 65..90;
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
var s1,s2 :string;
int : integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
checks : set of check;
begin
s1 := edit1.Text;
for i := 1 to 20 do
begin
int :=ord(s1[i]) ;
if int in checks then
insert(' ',s1,i-1);
end;
showmessage(s1);
end;

end.

check 是一个包含大写字母的集合,所以基本上每当遇到大写字母时,插入函数都会在遇到大写字母之前添加空格(在 s1 字符串内),但是我的代码什么都不做。 ShowMessage 仅显示在 Edit1 中输入的文本。我做错了什么?

最佳答案

check 是一个集合,你是对的,但是你还没有给它赋值,所以它的值是不确定的。其中没有您期望的字符,因此 in 测试可能总是失败。 (编译器没有警告你你还没有分配任何东西check吗?)

您真的不想将 check 定义为子范围类型。相反,您应该将 check 替换为内置的 TSysCharSet类型,这是一组字符。然后像这样分配 check:

check := ['A'..'Z'];

此外,与其使用 intOrd 检查字符串的数值,不如直接使用 Char 值:如果 s1[i] 在检查中。您还需要使用 Length 函数,这样您就可以处理整个字符串,而不是假设输入的长度始终恰好为 20 个字符。您还希望将结果存储到 s1 以外的其他内容中,因为 Caldon points out ,您不想在仍在从中读取更多字符的同时修改它。

关于delphi - 这段代码对字符串进行 un-camel-case 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2931265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com