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.