UNIT LoadOnDemand.ms.dict USES Log.ms.dict ; : UIDS_LIST ; // - список загруженных элементов initialization ( @ UIDS_LIST DisableForHelp ) TtfwWord FUNCTION LoadWord STRING IN aWordName STRING IN aDictName VAR l_VAR @ UIDS_LIST %% aWordName >>> l_VAR if ( l_VAR IsNil ! ) then begin l_VAR DO >>> Result end // l_VAR IsNil ! else begin //aWordName false @ UIDS_LIST pop:NewWordDefinitor:CheckRefcountVar >>> l_VAR aWordName false @ UIDS_LIST pop:NewWordDefinitor:CheckVar >>> l_VAR //UIDS_LIST ->^ aWordName >>> l_VAR // - добавляем переменную и снимем её со стека STRING VAR l_Code [ 'INCLUDE ' '''' aDictName '''' ' @ ' aWordName ] strings:Cat >>> l_Code BOOLEAN VAR l_WasException false >>> l_WasException TRY l_Code script:CompileStringAndProcess DO EXCEPT current:exception:Message . [ 'Возможно элемент ' aWordName ' удалён' ] strings:Cat . true >>> l_WasException nil >>> Result END if ( l_WasException ! ) then begin >>> Result Result pop:Word:Name aWordName == ?ASSURE [ 'Вернулось неверное слово ' Result pop:Word:Name ' вместо ' aWordName ] end // l_WasException ! l_VAR ^:= Result //Log: [ Result pop:Word:Name ' loaded' ] end // l_VAR IsNil ! ; // LoadWord WordAlias LW LoadWord TtfwWord FUNCTION WordLink Literal IN aWordName Literal IN aDictName aWordName |N aDictName |N LoadWord >>> Result ; // WordLink WordAlias WL WordLink
Заметки о тестировании, программировании и прочий "поток сознания", который жалко писать "в стол"
Комментариев нет:
Отправить комментарий