Die Funktion ExecuteNextCmd( void )

BOOL TSteering::ExecuteNextCmd( void )
{
  if (TheCmd->nFailureId)
  {
    MessageBox( GetFocus(), "Macro execution failed !", "Steerng", MBSTOP );
    if (TheCmd)
    {
      // eventuell vorhandenes vorhergehendes Befehls-Objekt zerstören
      // (Destruktor wird gerufen)
      delete TheCmd;
      TheCmd = NULL;
    }
    return FALSE;
  }
  if (TheCmd)
  {
    // eventuell vorhandenes vorhergehendes Befehls-Objekt zerstören
    // (Destruktor wird gerufen)
    delete TheCmd;
    TheCmd = NULL;
  }
  // Function tested; Last changes 950814
  if (TheCmdList[nCmdIdx].Id == Inquire)
    // bInquireResult wird nirgendwo verändert
    // und auch nicht initialisiert!!
    // Behfehlszähler erhöhen
    nCmdIdx += (bInquireResult) ? 2 : 1;
  else
    // Behfehlszähler erhöhen
    nCmdIdx++;
  switch (TheCmdList[nCmdIdx].Id)
  {
    case Stop:
      // Kontrolle an Steuerfenster übergeben
      NotifyMacroReady();
      return FALSE;
    case GotoLine:
      // Befehlszähler auf vorgefundenen Wert setzen
      nCmdIdx = TheCmdList[nCmdIdx].P1;
      if((TheCmdList[nCmdIdx].Id == Stop) || (nCmdIdx > TheMacro->Length-1))
      {
        // Stop gefunden oder Sprungadresse hinter letztem Befehl
        NotifyMacroReady();
        return FALSE;
      }
      return TRUE;
    default:
      // Neuen Befehl ausführen
      StartCmdExecution( TheCmdList[nCmdIdx] );
      return TRUE;
  }
}


Zurück zu SteeringReadyReaction()

Startseite


Kay Schützler
Last modified: Tue Sep 21 14:56:21 MET DST 1999