6

XE3 プログラムでのデータ処理は、XE2 でコンパイルされた同じプログラムの最大 10 倍かかります。これはQC 111942に報告された既知の問題 (おそらく主に TStringField を参照)ですが、まだ修正されていません。この問題の修正/回避策はありますか?

TIAブランコ

4

1 に答える 1

0

XE5でも同じ。加えて、余分なトラフィックと、このすべてのクライアント サーバーの処理が正常に動作するには、毎秒 5 メガビット (!) を超える必要があります。私は TFDConnection と TFDQuery のみを使用しています。特に MySQL の場合、速度は Delphi コンポーネントとサードパーティ ドライバ (libmysql.dll) で同じです。FireDAC がない場合は、TFDQuery を TSQLQuery に置き換えることができます。文字列グリッドを埋める手順は次のとおりです。

procedure SelGrid(sql:ansiString;Q:TFDQuery;grid:TStringGrid);
var i: integer;
begin
  Q.Close;
  Q.SQL.Text:='';
  Q.Open(sql);
  grid.ColCount:=Q.FieldCount;
  grid.RowCount:=1;
  while not Q.Eof do begin
    for i := 0 to grid.ColCount-1 do grid.Cells[i,grid.RowCount-1]:=Q.Fields.Fields[i].AsString;
    grid.RowCount:=grid.RowCount+1;
    Q.Next;
  end;
  Q.Close;
  if grid.RowCount>1 then grid.RowCount:=grid.RowCount-1;
  grid.Row:=0;
  //AutoSizeGridColumns(grid,30,200);
end;

これは VCL ストリング グリッドです。もちろん、更新などに対処することは考えますが、パフォーマンスの問題はもうありません。

于 2014-07-13T06:28:21.940 に答える