DBGrid に接続された DataSource に接続された ClientDataSet に接続された DataSetProvider に接続された ADOQuery があります。状況によっては、クエリが返すレコードが多すぎるため、MidasLib でメモリ不足エラーが発生します。
すべてのレコードをメモリにロードすることを避けるために DataReader を使用できることを読みましたが、DataReader を使用する方法がわかりませんが、DBGrid は適切に機能します。また、Delphi で DataReader を使用する方法に関する情報も見つかりません。
ADOQuery を DataSetProvider (およびチェーンの残りの部分) から切断し、クエリを実行して RecordCount を取得し、RecordCount が妥当と思われる場合にのみチェーンを再接続できるかどうか疑問に思います。
DataSetProvider を無効にする方法がわかりません。ClientDataSet を無効にしようとすると、とにかくメモリ エラーが発生します。