我收到编译错误“[DCC错误] FormMain.pas(78):E2029'。'预期,但';'发现“但我无法确定问题出在哪里,因为我直接从http://blog.marcocantu.com/blog/xe5_anonymous_showmodal_android.html复制了这个问题 我使用这种代码:
procedure TForm1.ButtonMuutaClick(Sender: TObject);
var FormTiedot :TFormTiedot;
begin
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT * FROM Laskuttaja WHERE ID=:ID');
FDQuery1.ParamByName('ID').AsString := '1';
FDQuery1.Open();
FDQuery1.First;
FormTiedot := TFormTiedot.Create(nil);
while(not FDQuery1.Eof) do begin
FormTiedot.EditNimi.Text := FDQuery1.FieldByName('Nimi').AsString;
FormTiedot.EditOsoite.Text := FDQuery1.FieldByName('Osoite').AsString;
FormTiedot.EditY.Text := FDQuery1.FieldByName('Ytunnus').AsString;
FDQuery1.Next;
end;
FormTiedot.ShowModal(procedure(ModalResult: TModalResult) begin if ModalResult = mrOK then begin
// if OK was pressed and an item is selected, pick it
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('UPDATE Laskuttaja SET Nimi = '+QuotedStr(FormTiedot.EditNimi.Text)+', Osoite = ' + QuotedStr(FormTiedot.EditOsoite.Text) + ', Ytunnus=' + QuotedStr(FormTiedot.EditY.Text));
FDQuery1.SQL.Add('WHERE ID=1');
FDQuery1.ExecSQL;
end;
FormTiedot.DisposeOf;
end);
//FormTiedot.DisposeOf;
//if FormTiedot.ShowModal = mrOk then begin
//FDQuery1.SQL.Clear;
// FDQuery1.SQL.Add('UPDATE Laskuttaja SET Nimi = '+QuotedStr(FormTiedot.EditNimi.Text)+', Osoite = ' + QuotedStr(FormTiedot.EditOsoite.Text) + ', Ytunnus=' + QuotedStr(FormTiedot.EditY.Text));
// FDQuery1.SQL.Add('WHERE ID=1');
//FDQuery1.ParamByName('Nimi').Value := FormTiedot.EditNimi.Text;
//FDQuery1.ParamByName('Osoite').Value := FormTiedot.EditOsoite.Text;
//Error Y-tunnus not found here
//FDQuery1.ParamByName('Ytunnus').Value := FormTiedot.Edit1.Text;
end;
end;
答案 0 :(得分:8)
代码中有一个迷路end
。 penulatimate end
与方法的begin
匹配。应删除最后一个。
如果您查看已注释掉的代码,则注释掉begin
,但未能对匹配的end
进行注释。
//if FormTiedot.ShowModal = mrOk then begin !! commented out begin !!
//FDQuery1.SQL.Clear;
// FDQuery1.SQL.Add('UPDATE Laskuttaja SET Nimi = '+QuotedStr(FormTiedot.EditNimi.Text)+', Osoite = ' + QuotedStr(FormTiedot.EditOsoite.Text) + ', Ytunnus=' + QuotedStr(FormTiedot.EditY.Text));
// FDQuery1.SQL.Add('WHERE ID=1');
//FDQuery1.ParamByName('Nimi').Value := FormTiedot.EditNimi.Text;
//FDQuery1.ParamByName('Osoite').Value := FormTiedot.EditOsoite.Text;
//Error Y-tunnus not found here
//FDQuery1.ParamByName('Ytunnus').Value := FormTiedot.Edit1.Text;
end; !! and the matching end is not commented !!
你说“我直接从中复制了”这有点奇怪,实际上这里的代码与你链接的代码几乎没有明显的关系。显然你没有直接复制它 - 你必须注意到你编辑了它,评论了部分等等。
代码的不良缩进使您很难检测到错误。您始终可以要求IDE格式化您的代码,它将修复您的缩进。这很好地说明了为什么仔细布局代码很重要。