BOOL TSteering::ParsingMacroId( TMacroTag& macro, LPSTR name ) { // Function tested // Last changes 950811 while (1) { // strcmp() liefert 0 bei Übereinstimmung if (!strcmp( name, "SearchReflection" )) { // Id mit entsprechendem enum-Wert versorgen macro.Id = SearchReflection; // Name in Stringform merken strcpy( macro.Name, name ); // while-"Schleife" verlassen break; } // s. o. if (!strcmp( name, "InquireHwb" )) { macro.Id = InquireHwb; strcpy( macro.Name, name ); break; } if (!strcmp( name, "BatchMacro" )) { macro.Id = BatchMacro; strcpy( macro.Name, name ); break; } if (!strcmp( name, "ScanJob" )) { macro.Id = ScanJob; strcpy( macro.Name, name ); break; } if (!strcmp( name, "AreaScanJob" )) { macro.Id = AreaScanJob; strcpy( macro.Name, name ); break; } if (!strcmp( name, "MiddleOfValley" )) { macro.Id = MiddleOfValley; strcpy( macro.Name, name ); break; } if (!strcmp( name, "AzimutalJustify" )) { macro.Id = AzimutalJustify; strcpy( macro.Name, name ); break; } if (!strcmp( name, "SetupTopography" )) { macro.Id = SetupTopography; strcpy( macro.Name, name ); break; } if (!strcmp( name, "Test" )) { macro.Id = Test; strcpy( macro.Name, name ); break; } // Makroname unbekannt macro.Id = (TMacroId) nMacroNumber; sprintf( macro.Name, "Macro%d", nMacroNumber ); // Fehlermeldung (folgenlos) SetInfo( "No Match for this Macro-Name." ); // Funktion verlassen return FALSE; } // while (1) ends here // Überprüfen, ob das Makro schon mal geladen wurde for (int idx = 0; idx < nMacroNumber; idx++) if (macro.Id == aMacroList[idx].Id) { // gegebenenfalls Fehlermeldung (folgenlos) SetInfo( "Macro is already loaded." ); return FALSE; } return TRUE; }
Die Funktion ParsingMacroId() testet zwar, ob das Makro unbekannt oder schon geladen ist, und gibt dementsprechende Werte zurück, leider werden diese von der aufrufenden Funktion nicht beachtet. Insbesondere werden die Befehlslisten bereits vorhandener Makros durch die neu eingelesenen überschrieben. Eine eventuelle Anforderungsspezifikation müsste hier eine Entscheidung für die eine oder die andere Variante treffen.