Получение констант с определением ошибки функцией LoadStr



В семье программиста несчастье. Жена прибегает в слезах:
- У меня случился выкидыш! Программист задумчиво чешет репу:
- Мда-а... Баг в бета-версии...

Возбуждение исключения и передача строковой константы ошибки из CONSTS.PAS (как это делалось в Delphi 1 и Delphi 2) в Delphi3 невозможна. Например:


raise SomeException.Create(LoadStr(SInsertLineError)); 

в Delphi3 теперь не работает. Я предлагаю использовать выражение


raise SomeException.Create(
{$IFNDEF VER100}LoadStr{$ENDIF}
(SInsertLineError));

для вызова функции LoadStr "по нужде", устаревшей почему-то для этих целей в Delphi 3.

При попытке вызвать данную функцию в Delphi 3 (для получения типа ошибки, декларированной в модуле CONSTS(.PAS/.DCU)), мы получаем следующую ошибку компилятора: "Incompatible types: 'Integer' and 'String'"

Однако в Delphi 4 данная оплошность исправлена и вроде как документирована. Почитайте в хелпе на тему "resourcestrings", посмотрите сырцы и все сразу станет понятно и просто.