|
|
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
Есть ключевое слово resourcestring. ...эти строковые константы размещаются не в сегменте данных программы, а в ресурсах, и подгружаются оттуда по мере необходимости. Каждая такая константа воспринимается и обрабатывается как обычная строка. Но за каждой из них на самом деле стоит структура PResStringRec ... (с) ...компилятор заменяет строковую константу на вызов LoadResSring для загрузки ресурса во время выполнения программы... (с) Вот в связи с этим и собственно вопрос темы: Код: pascal 1. 2. Зачем делать так: Код: pascal 1. Если можно делать так: Код: pascal 1. Поясните, пожалуйста, разницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 11:45 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
RTFM STRINGTABLE resources ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 11:53 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
guest-user, При использовании второго варианта компилятор создаёт неявную строковую переменную. Строки являются типами с управляемым временем жизни, поэтому в пролог функции/процедуры будет добавлен код для очистки этой переменной, который будет отрабатывать вне зависимости от того использовалась переменная или нет. При использовании первого варианта в метод передаётся только указатель на структуру описывающую ресурсную строку и пролог вызывающей функции остаётся чистым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 12:25 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeyпролог Эпилог, разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 12:30 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
schiRTFM STRINGTABLE resources Читал, конечно и MSDN , и community.embarcadero , и еще вот такой материал . Ну если использовать эту самую STRINGTABLE "ручками", то может этот конструктор CreateRes и будет полезен, но если используешь resourcestring, то тогда-то зачем? Kazantsev AlexeyПри использовании второго варианта компилятор создаёт неявную строковую переменную... Спасибо, это уже что-то... То есть дело в оптимизаци? Но вот какое дело, если посмотреть, например, код класса TStream (модуль Classes.pas) в Delphi и в Lazarus, то: в Delphi встречаются оба варианта: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. а в Lazarus, CreateRes я вообще не нашел только CreateFmt: Код: pascal 1. 2. 3. 4. Так как лучше? Нужно просто иметь возможность локализовать сообщения ИС моего модуля. Если дело только в оптимизации - то наверное лучше - Create, а не CreateRes? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:03 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
guest-userПоясните, пожалуйста, разницу. Ты не поверишь, но DLL с ресурсами не обязаны быть собраны дельфями и генерироваться из resourcestring. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:06 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
guest-user...Нужно просто иметь возможность локализовать сообщения ИС моего модуля. Именно штатными(стандартными) средствами инструмента разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:08 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТы не поверишь, но DLL с ресурсами не обязаны быть собраны дельфями и генерироваться из resourcestring. Спасибо, я об этом же и говорю: guest-userесли использовать эту самую STRINGTABLE "ручками", то может этот конструктор CreateRes и будет полезен, но если используешь resourcestring, то тогда-то зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:12 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
И еще по поводу оптимизации, вот нашел такой старенький пост 2002 года... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:18 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
guest-userСпасибо, я об этом же и говорю: Нет, в сабже написан вопрос "назачем его вообще сделали?" Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:19 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
Ок, спасибо всем участникам топика. Можно резюмировать: Конструктор Exception.CreateRes() нужен для custom-доступа к STRINGTABLE, а в случае с resourcestring возможно(?) более оптимален с точки зрения создания и использования неявных строковых переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 13:32 |
|
||
|
Зачем нужен конструстор Exception.CreateRes() ?
|
|||
|---|---|---|---|
|
#18+
guest-userСпасибо, это уже что-то... То есть дело в оптимизаци? В том числе, там где это требуется. guest-userв Delphi встречаются оба варианта В Delphi ещё и не такое встречается. guest-userа в Lazarus, CreateRes я вообще не нашел только CreateFmt В FPC долгое время ресурсов, как отдельно хранящейся сущности, вообще не существовало, да и сейчас их поддержка находится на начальном уровне. Например, вот функция LoadResString из транка: Код: pascal 1. 2. 3. 4. то есть, PResStringRec в FPC есть ни что иное, как указатель на константную строку, т.е. сами ресурсные строки - суть обычные константы. В такой ситуации нет нужды думать об оптимизациях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 14:03 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39671517&tid=2040642]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 510ms |

| 0 / 0 |
