0

Embarcadero C++ Builder を使用しています (プログラマーではなくエンジニア)

スリープ機能はデバッグ モードでのみ機能し、リリース モードでは機能しないことがわかりました。StackOverFlow には、Sleep を使用せずに TTimer を使用するという参照があります。

Sleep(500); に従ってオブジェクトを描画する間、アプリを数秒間一時停止させたいだけです。以下のコードで、各オブジェクトが描画されていることを確認し、それらが正しいことを確認できるようにします。

DrawSelectedShape(k,Side,AddOrDeduct,Color); 以下のコードでは、一時停止が必要なプロセスです

for (int n=0; n<LiquidLoads->TankBasicData->NoLiquidTypes; ++n){
  for (int m=0; m<LiquidLoads->TankBasicData->NumberOfTanks[n]; ++m)
  {
    for (int l=1; l<LongStrengths->TotalNumberOfParts+1; ++l)
     {
       if (LiquidLoads->TankHeaderArray[n][m]->GhsName == LongStrengths->PartHeader[l]->PartName)
       {

         for (int j=0; j<LongStrengths->PartHeader[l]->NoOfComponents; ++j)
         {
            int k = LongStrengths->PartData[l][j]->ShapeNumber;
            int Side = LongStrengths->PartData[l][j]->Side;
            float AddOrDeduct = LongStrengths->PartData[l][j]->Effectiveness;
            AnsiString Color = LiquidLoads->TankBasicData->LiquidTypeColor[n];
            DrawSelectedShape(k,Side,AddOrDeduct,Color);

            Canvas->TextOut(1200, 300+(n*25),LiquidLoads->TankBasicData->LiquidType[n]);
            Sleep(300);
         }
       break;
       }
   }
}  }

上記のコードはデバッグ モードでは完全に機能しますが、リリース モードでは、最初のいくつかの図形がキャンバスに描画されるまで正常に機能し、しばらくの間回転するホイール マウス カーソルが表示され、その後空白のキャンバスが表示されます。

だから私はスリープに代わるものを探しています。

TTimer (経験なし) を使用する場合、OnTimer イベントを使用し、Timer1 間隔に関連する遅延でイベントに繰り返し実行されるコードを配置します。これは、途中で数秒の遅延を探すのとはまったく同じではありません。 forループの

これは私のレンダリングがどのように見えるかです:

アニメーション

どんなアドバイスでも大歓迎です。

4

2 に答える 2