title: How long have the Lookup and Locate methods of TDataset been around?
body: <p>I'm working on modernizing and fixing bugs in the codebase of a Delphi 4-era program written by someone else.  A lot of the code is kinda scary by modern standards, and I can't help but wonder if some of the things I'm seeing are there because the original author didn't know about certain standard library features, or if they weren't available.</p>
  
  <p>One of the more obnoxious "patterns" I see all over the app looks like this:</p>
  
  <pre><code>table := TClientDataset.Create;
  with table do
  begin
    CloneCursor(dmDatabase.OriginalTable, false, true);
    filtered := true;
    active := true;
    first;
    while not EOF do
    begin
      if fieldByName('whatever').AsString = 'some criteria' then break;
      next;
    end;
    if EOF then exit;
    //do something based on the current row of the dataset
    table.free;
  end;
  </code></pre>
  
  <p>Almost every one of these groups could be replaced by a one-line call to either <code>Lookup</code> or <code>Locate</code> on the original dataset, with no need for an intermediary CDS at all.  That makes me wonder, were these methods available back in the D4 days?  When were <code>Lookup</code> and <code>Locate</code> first added?</p>