gpt4 book ai didi

delphi - 使用 for 循环将字符串转换为字符数组 string[0] 始终为 null

转载 作者:行者123 更新时间:2023-12-02 11:17:15 25 4
gpt4 key购买 nike

procedure TfmCypher.btn1Click(Sender: TObject);
var
i: integer;
MasterkeyArray: array of char;
Masterkey : string;
j : integer;
begin
Masterkey := edtKey.text;
setlength(MasterKeyArray, length(edtkey.text));

for i:= 0 to length(masterkey) do
begin
MasterkeyArray[i] := masterkey[i];
end;

在上面的代码中,我试图弄清楚为什么 MasterKeyArray 填充为 { #0, a, b}MasterKeyArray 始终为 #0。最终我只想要一个字符串主 key 的 charArray 。我一直遇到 masterkey[0] 被分配为 #0 的问题。主 key 字符串是从 editbox.text 收集的。

最佳答案

字符串的索引为 1,而数组的索引为 0。您的循环正在尝试访问无效的字符串索引 0,并且您也超出了数组的上限。

试试这个:

procedure TfmCypher.btn1Click(Sender: TObject);
var
i: integer;
MasterkeyArray: array of Char;
Masterkey : string;
begin
Masterkey := edtKey.text;
SetLength(MasterKeyArray, Length(Masterkey));

for I := 1 to Length(MasterKey) do
begin
MasterkeyArray[I-1] := Masterkey[I];
end;
end;

更简单的解决方案是完全摆脱循环并使用 Move() 代替:

procedure TfmCypher.btn1Click(Sender: TObject);
var
i: integer;
MasterkeyArray: array of Char;
Masterkey : string;
begin
Masterkey := edtKey.text;
SetLength(MasterKeyArray, Length(Masterkey));
if Masterkey <> '' then begin
Move(Masterkey[1], MasterKeyArray[0], Length(Masterkey) * SizeOf(Char));
end;
end;

关于delphi - 使用 for 循环将字符串转换为字符数组 string[0] 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467017/

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