0

我收到编译器错误“[DCC Error] 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;
4

1 回答 1

8

end你在代码中有一个迷路。倒数end匹配begin方法的。最后一个应该被删除。

如果您查看注释掉的代码,您注释掉了 abegin但未能注释掉匹配的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 格式化您的代码,它会修复您的缩进。这很好地说明了为什么仔细布局代码很重要。

于 2013-12-31T13:09:12.867 回答