当两个记录都存在时,函数将IsValid返回为false [英] function returns IsValid as false when both records exist

查看:160
本文介绍了当两个记录都存在时,函数将IsValid返回为false的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码的目的是查找并打开贷款记录和会员记录。由于我正在创建一个用户没有带条形码卡的图书馆系统,他们必须记住唯一ID,所以我认为如果他们只需要记住一个唯一身份证的号码就会更容易相关记录。但是,下面的代码有一个错误,即当两个记录都存在时,函数将IsValid返回为false。帮助?



The aim of the code below is to find and open a loan record and a member record. Since I'm creating a library system where the user does not have a card with a barcode, they have to remember the Unique ID so i thought it would be easier if they only have to remember one number that is the Unique ID to all their relevant records. However the code below has an error in that the function returns IsValid as false when both records exist. Help?

procedure RecordCheck(var MemberID: integer);
var
  IsValid: boolean;
  { Procedure to check that Records exist }

  function ValidateID(Member_ID: integer): boolean;
  var
    Error: boolean; { True/False- false until there is an error }
    Count: integer; { For each letter and number }
 begin
    Error := false;
    AssignFile(MemberDetailsFile, 'MemberDetails.dat');
    Reset(MemberDetailsFile);
    while not eof(MemberDetailsFile) do
    begin
      read(MemberDetailsFile, MemberRecords);
      if  Member_ID = MemberRecords.UniqueId then
      begin
        { if match/record found }
        Error := false;
        end
        else
        Error := true
      end;
    begin
      AssignFile(LoanFile, 'LoanFile.dat');
      Reset(LoanFile);
      while not eof(LoanFile) do
      begin
        read(LoanFile, LoanRecords);
        if not Member_ID = LoanRecords.LoanUniqueId  then
        begin
          Error := true
        end
        else
          result := not Error;
      end; { of Check }
    end;
  end;

begin
  IsValid := ValidateID(MemberID);
  if IsValid = false then
    if MessageDlg('The Member ID or loan record does not exist! Try again?',
      mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
    begin
      { if user chooses not to try again }
      frmLoanProductsIDConfirm.Close;
      frmIssue.Show;
      exit;
    end
    else
    begin
      { if user chooses to try again }
      frmLoanProductsIDConfirm.Show;
      frmIssue.Hide;
    end;
  if IsValid = true then
    frmIssueProd.Show;
    frmIssue.Close;
    frmLoanProductsIDConfirm.Close;
end;

推荐答案

嗯,这可能会有所帮助您是否曾将错误分配给 false以外的其他内容 ...

这些都是你引用变量的时间:

Well, it would probably help is you ever assigned Error to something other than false...
These are every time you reference the variable:
Error: boolean; { True/False- false until there is an error }
    Error := false;
        Error := false;
          Error := false
          result := not Error;

因此结果将始终为真。


这篇关于当两个记录都存在时,函数将IsValid返回为false的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆