updat:

ich habe jetzt die obige Funktion
void __fastcall TForm1::ComPort1Exception()
wieder komplett rausgenommen, sie hat letztendlich die Stabilität nicht deutlich verbessert.

Aber ich habe die Routinen fürs manuelle Verbinden leicht abgeändert, jetzt lässt sich nach USB-Unterbrechung die Verbindung ohne Störung wiederherstellen, wenn sie existiert, und es blockiert nichts mehr, wenn sie nach wie vor weg ist:
Code:
void __fastcall TForm1::Button1Click(TObject *Sender)  // Button press: "Connect"
{
   ComPort1->ShowSetupDialog();
   try {ComPort1->Open();}
   catch(...) { };

   if(ComPort1->Connected )  {
     // init program variables and widget states
   }
}

void __fastcall TForm1::Button2Click(TObject *Sender)  // Button press: "Disconnect"
{
   if(ComPort1->Connected ) { 

       // try to send pin-stop msg to Arduino
      strcat(msgcstr,  "&_ALLPINS_=0;\n" );
      ComPort1->WriteStr(msgcstr);  

      Sleep(100);  // safety sleep

      try {  ComPort1->Close();  }
      catch (...) { }
   }
}

aktuelle, recht stabile und einigermaßen brauchbare Version:
https://github.com/dsyleixa/Borland-...rduinoCOM_RxTx