【问题标题】:Delphi problems inserting a string, Incompatible types errorDelphi 插入字符串时出现问题,类型不兼容错误
【发布时间】:2016-02-10 18:22:19
【问题描述】:
procedure TTelephoneNumberConverter.btnConvertClick(Sender: TObject);
var
  number: string;
  dupe: string;
  converted: string;
begin
  number := edtInput.Text ;
  dupe := Copy(number, 4, 1) ;
  converted := Insert(dupe , number , 4 ) ;
  pnlOutput.Caption := converted;
end;

好的,伙计们,我有一个关于 Delphi 2010 和将字符串插入其他字符串的快速问题。这段小代码的目的是获取特定字符串中的第 4 个字符并将其复制并添加到特定字符旁边,例如12345 -> 123445

唯一的问题是我不断收到错误:

不兼容的类型“字符串”和“过程、无类型指针或无类型参数”。

我可能遗漏了一些小而愚蠢的东西,但如果有人能回答我的问题,我将不胜感激。

【问题讨论】:

  • 我可能遗漏了一些东西:您的意思是像 System.Insert documentation 或 Code Insight 为您提供的告诉您这是一个过程而不是函数的弹出窗口?

标签: delphi delphi-2010


【解决方案1】:

Insert 是一个修改其第二个参数的过程。

它的签名是:

procedure Insert(Source: string; var Dest: string; Index: Integer);

您看到的编译器错误是因为Insert 不返回任何内容,因此不能是赋值的右轴。

因此,您的代码应该是:

converted := number;
Insert(dupe, converted, 4);

Copy 对于单个角色来说太过分了。请改用[]

dupe := number[4];

【讨论】:

  • 需要注意的是,如果你要使用直接字符索引,那么你还需要添加一个长度检查来处理长度小于4个字符的number,以避免出现@然后将导致 987654330@ 。 Copy 避免了这种情况,因为如果输入字符串短于指示的起始位置,它将简单地返回一个空字符串,从而在数字长度小于 4 个字符时导致无操作.添加这些保障措施来获得微不足道的(在这种情况下)效率提升可能比简单地利用 Copy() 中已经内置的保障措施更大。
猜你喜欢
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 2012-07-22
相关资源
最近更新 更多