Wenn Du weißt, dass der zu setzende Typ mit dem zu setzenden Wert immer übereinstimmt, dann musst Du natürlich den Typen nicht mehr abfragen.
Sprich: Wenn SetProperty2 nur zum Setzen von String genutzt wird, kann das Case entfallen.
War halt davon ausgegangen, dass Du eine Routine suchst, bei der es egal ist, was da an Werten und Typen "reinkommt". Bekannt seien nur Eigenschaftsname und der zu setzende Wert.
Dazu wollte ich dann eine Routine haben, der es quasi egal ist, was da rein kommt. Sie sucht die entsprechende Eigenschaft und setzt dann typkonform deren Wert.
Trotzdem müsste meiner Meinung nach dashier reichen:
SetStrProp(LBotOptions,sProperty,sValue);
Die von Dir implementierte Schleife passiert im Inneren von SetStrProp noch einmal, da dort auch zuerst die Eigenschaft des Objektes gesucht wird, um dieser dann den Wert zuzuweisen.
Deine Schleife dient also nur zur Absicherung, dass vor dem Setzen geprüft wird, ob es die Eigenschaft gibt.
Das müsste auch in etwa so funktionieren:
Delphi-Quellcode:
if IsPublishedProp(LBotOptions,sProperty) then begin
SetStrProp(LBotOptions,sProperty,sValue);
end;