delphi - delphi 无效参数

标签 delphi

我在保存字符串时遇到错误。错误是: 项目 prKlanten.exe 引发异常类 EVariantInvalidArgError 并显示消息“无效参数”。

    var
  fmOrder: TfmOrder;
  orderid: string;

implementation

{$R *.dfm}
uses unDm, unInloggen, unKlant, unKeuze, unbeheer, unAccount, unOrderChange;

procedure TfmOrder.btOpslaanOClick(Sender: TObject);
  begin
    dm.atOrder.open;
    dm.atOrder.Append;
    dm.atOrder ['OrderStatus']             := ('Aangemeld');
    dm.atOrder ['klantID']                 := fminloggen.userid;
    dm.atOrder ['OrderDatum']              := leOphaalDatum.text;
    dm.atOrder ['Opmerkingen']             := leOpmerkingen.text;
    fminloggen.userid                      := dm.atOrder ['KlantID'];
    dm.atOrder ['OrderID']                 := fmOrder.orderid ;   
    dm.atOrder.post;
    fmOrderChange.ShowModal;
  end;
end.

行:

dm.atOrder ['OrderID']                 := fmOrder.orderid ;

给出错误。我拼写正确,fminloggen.userid 确实有效。

有谁知道问题出在哪里吗?

提前致谢!

贾斯珀

我以其他形式做了同样的事情:

public
  var inlognaam : string;
  userid    : string;
end;

var
  fmInloggen: TfmInloggen;

implementation

{$R *.dfm}

uses unKlant, unbeheer, unaccount, unKeuze,unDm;

procedure TfmInloggen.BTinloggenClick(Sender: TObject);

var Gevonden: boolean;
  begin
    dm.atInlog.open;
      Gevonden := false;
    while (not Gevonden) and (not dm.atInlog.eof) do
      begin
          if dm.atInlog['email'] = leUser.Text
          then
        begin
         Gevonden := true ;
         fminloggen.inlognaam := dm.atInlog['email'];
         fminloggen.userid    := dm.atInlog['KlantID'];
        end
          else
        dm.atInlog.Next
      end;

  if Gevonden and (dm.atInlog['Password'] = lePassword.text)
    then
     if dm.atInlog['Autorisatie'] = '1'
       then
       begin
          fmKlant.Caption := dm.atInlog['email'];
          fmKeuze.ShowModal;
       end
        else if dm.atInlog['Autorisatie'] = '2'
         then
         begin
           fmKlant.Caption := dm.atInlog['email'];
           fmBeheer.ShowModal;
         end;
    dm.atInlog.Close;
  end;

除非这是带有用户ID的

最佳答案

在您的工作示例中,您有:

public
  var inlognaam : string;
  userid    : string;
end;

假设它们都是表单声明中的字段。

在您的非工作示例中,您有:

  var
fmOrder: TfmOrder;
orderid: string;

fmOrder 似乎是 IDE 生成的表单实例变量。如果 orderid 紧随其后,则它不能是表单声明的字段。

您确定已将 orderid 声明为 TfmOrder 表单声明中的字段吗?正如您在对 @BugFinder 的回答的评论中所说,您无法插入 myStringVar := fmOrder.orderId; 行,我怀疑您会遇到编译器错误,这很可能是因为 orderId 不是fmOrder 的成员字段...

关于delphi - delphi 无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5511416/

相关文章:

delphi - 生成将解析具有给定 BNF 格式的文件的 Delphi 代码

delphi - 可以从 ansistring 中删除 unicode 或 UTF8 字符吗?

c++ - Delphi 中 dynamic_cast 的等价物是什么?

delphi - Delphi 中的 Java 最终变量

Delphi插入字符串时出现问题,类型不兼容错误

delphi - Delphi Prism 中 TStringList 的替代品。

delphi - 按字符串过滤时隐藏 TListBox 中的项目

delphi - 用于将 Delphi TDataSet 导出到 native XLS 的开源组件或单元,无需安装 Excel

delphi - 有什么方法可以获取Delphi编译器的子版本

delphi - 如何使用尚未初始化的变量