Oma*_*bal 3 delphi error-handling
该代码可以正常工作:
procedure TForm2.Timer1Timer(Sender: TObject);
var
Text: string;
begin SetLength (Text,555);
GetWindowText (getforegroundwindow, PChar (Text),555);
Form2.gtListBox1.Items.Add (
IntToStr (getforegroundwindow) + ': ' + Text);
end;
Run Code Online (Sandbox Code Playgroud)
但是当我放
var
Text: string;
Run Code Online (Sandbox Code Playgroud)
从Timer1Timer事件处理程序到单元实现部分或单元var部分中的“文本:字符串”,我得到错误:E2197
根据文档,不能将常量对象作为var参数传递:
当您尝试将常量作为函数或过程的var或out参数发送时,会出现此错误消息。
但是我没有将文本声明为常量,那么为什么会出现此错误?
编辑: @梅森·惠勒:我不明白,为什么这工作:
implementation
{$R *.dfm}
var
char :integer;//first of all why does delphi let me declare variable that is also a type name
procedure TForm2.Button1Click(Sender: TObject);
begin
char:=11;
showmessage(IntToStr(char));
end;
Run Code Online (Sandbox Code Playgroud)
我的第一个代码无法正常工作,因为我将文本声明为字符串,您会说:“编译器可能认为它是对类型的引用,而不是对变量的引用”,为什么编译器不认为它是对类型的引用而不是对变量的引用在这种情况下的变量?我很困惑
Edit2:我现在明白了什么地方出了问题,但仍然有1个困惑,我没有使用with语句,然后为什么delphi会像对待我一样使用:
with
form1 do
text := 'blahblahblah';
Run Code Online (Sandbox Code Playgroud)
这在delphi部分上是错误的,我的意思是delphi不应该让我们这样做text := 'blah',form1.text := blah;或者with form1 do text := 'blah';我是否需要打开/关闭某些编译器设置,我正在使用没有任何ide专家的delphi 2010
实际上,如果Text在实现部分声明并使用它Timer1Timer(Sender: TObject),则编译器会将Text视为Form1.Text。
将文本名称更改为sText即可。
编辑1:
因为没有像这样的表单的属性/字段Form1.Char。
| 归档时间: |
|
| 查看次数: |
3360 次 |
| 最近记录: |