【问题标题】:Delphi const string codeDelphi const 字符串代码
【发布时间】:2016-04-30 21:39:16
【问题描述】:

我明白了

function TForm1.GetArsHedef(): String;
const
 DosyaAdi: String = 'hello';

我需要

function TForm1.GetArsHedef(): String;
const
 DosyaAdi: String = edit1.text+edit2.text;

但是代码不起作用 谁可以帮忙

现在谢谢。技术

【问题讨论】:

  • delphi seattle 10,我在做录音程序
  • 你为什么说你“需要”那个?
  • 通话录音程序
  • 我不明白那是什么意思,卡恩。录音程序与 const 字符串有什么关系?我从未编写过任何记录程序,但我无法想象这种特殊用途如何需要从输入字段创建的 const 字符串。请扩展您的解释。
  • Rob 我正在做通话录音程序。

标签: delphi


【解决方案1】:

常数必须是常数。它们必须在编译时知道。你需要一个变量。

var
  DosyaAdi: String; 
....
DosyaAdi := edit1.text+edit2.text;

【讨论】:

  • LIBRARY 除外,但收到了标识符
  • 这是另一个问题。你展示了一种不可思议的能力,可以产生不合逻辑的人。
  • 我不知道我是如何选择你想在编辑器上打印值的,但是它不允许 const factor (edit1.text+edit2.text) 我想这样做
  • 您是否难以理解“常数”一词在此上下文中的含义?我的答案的关键部分是:它们必须在编译时知道。这对你有意义吗?你读过任何人写的东西吗?
【解决方案2】:

你需要使用一个变量,而且在你的函数中你甚至不需要声明一个。 Delphi 自动在函数中声明变量Result 并使其成为要返回的正确类型。

function TForm1.GetArsHedef(): String;
begin
  Result := Edit1.Text + Edit2.Text;
end;

【讨论】:

    【解决方案3】:

    你不能做你想做的事。常量在编译时转换为它们的实际值,并且不是动态的。尤其是因为这个常量对于过程来说是局部的,所以只需要使用一个变量来代替。 “常量”这个词本身解释了它的意图是“常量”是相同的值。

    在任何情况下,您都不能定义或声明局部变量或常量,同时将它们的默认值设置为另一个变量。要读取这些编辑控件的内容,必须在实现中显式编写代码来分配它。

    【讨论】:

    • 不过,你可能想看看这个:Delphi assign to const.
    • 我认为操作希望分配给DosyaAdi 的值在重新进入函数时保持不变。有些喜欢可赋值的常量。
    • @lurker 实际上,分配给常量在技术上是可行的,但 OP 希望通过直接引用控件来定义常量。当您可以使用变量时,我个人认为没有任何理由要分配给常量。这就像买一辆汽车只是为了把它用作雪橇一样。
    • @JerryDodge 你可能是对的。不过,OP 的问题有点简洁,所以很难说出他们真正需要什么。
    • 嗯,带有variables的表达式不是constant表达式,你需要前者来初始化一个常量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2011-05-20
    • 2015-11-08
    相关资源
    最近更新 更多