请看这段代码,怎么不能通过呢?(10分)

  • 主题发起人 主题发起人 redwood
  • 开始时间 开始时间
R

redwood

Unregistered / Unconfirmed
GUEST, unregistred user!
begin
with dm do
begin
if edit24.text='' then
begin
form2_query1.close
form2_query1.sql.clear
form2_query1.sql.Add('SELECT 学号,姓名,年龄,性别,籍贯,出生日期,政治面貌,入学日期,专业,班级 FROM "xueji_main.db" Xueji_main WHERE 年龄>=:age1 and 年龄<=:age2')
form2_query1.parambyname('age1').asinteger := edit25.text
form2_query1.parambyname('age2').asinteger := edit26.text
end
else
form2_query1.close;
form2_query1.sql.clear;
form2_query1.sql.Add('SELECT 学号,姓名,年龄,性别,籍贯,出生日期,政治面貌,入学日期,专业,班级 FROM "xueji_main.db" Xueji_main WHERE 年龄=:age3');
form2_query1.parambyname('age3').asinteger := edit24.text;
end;
end;
错误显示
[Error] Unit2.pas(326): Missing operator or semicolon
[Error] Unit2.pas(329): Incompatible types: 'Integer' and 'TCaption'
[Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit2.pas'

为什么会这样呢?else前不是不能有分号吗?
 
object pascal的语法似乎还需要再学习一下。
一句话结束要使用分号“;”
赋值使用“:=”
 
>>form2_query1.parambyname('age1').asinteger := edit25.text
form2_query1.parambyname('age1').asinteger := StrToInt(edit25.text)
不能简单的赋值,需要使用转换
 
else 前的 end 不能有";",但是在begin 与 end 之间必须有";".
 
用''而不用"
 
可以将
>>form2_query1.parambyname('age1').asinteger := edit25.text
改为
form2_query1.parambyname('age1').asstring:= edit25.text;
其他的是不大熟悉PASCAL造成的!
 
通过了!
procedure TForm2.Button1Click(Sender: TObject);
begin
with dm do
begin
if edit24.text='' then
begin
form2_query1.close;
form2_query1.sql.clear;
form2_query1.sql.Add('SELECT 学号,姓名,年龄,性别,籍贯,出生日期,政治面貌,入学日期,专业,班级 FROM "xueji_main.db" Xueji_main WHERE 年龄>=:age1 and 年龄<=:age2');
form2_query1.parambyname('age1').asinteger := StrToInt(edit25.text);
form2_query1.parambyname('age2').asinteger := StrToInt(edit26.text);
end
else
form2_query1.close;
form2_query1.sql.clear;
form2_query1.sql.Add('SELECT 学号,姓名,年龄,性别,籍贯,出生日期,政治面貌,入学日期,专业,班级 FROM "xueji_main.db" Xueji_main WHERE 年龄=:age3');
form2_query1.parambyname('age3').asinteger := StrToInt(edit24.text);
end;
end;
 
后退
顶部