可以使用Helper来解决这个问题:
TDatasetHelper = class helper for TDataset public function GetRecordCount:Longint; end; function TDatasetHelper.GetRecordCount:Longint; var prevRecNo: Integer; begin if self.Active then begin prevRecNo := RecNo; Result := 0; First; while not(EOF) do begin Inc(Result); Next; end; RecNo := prevRecNo; end; end;