|
|
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Мне нужно передать в процедуру не строку string, а указатель на нее. Я знаю, что можно передать параметр как var, но мне надо по-другому. Я сделал так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вроде работает все прекрасно, но на всякий случай хочу уточнить, нет ли здесь "подводных камней", может надо где-то под указатель память выделить или еще что-то? Возможно, я все правильно сделал и проблем не в будущим не возникнет. В любом случае мнение экспертов по поводу данного кода мне не помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 19:22:04 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
m52, все ок, но лучше использовать стандартный тип PString ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 19:54:32 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
Любит наш народ любовно раскладывать грабли на своем пути... Потом выясниться, что где-нить счетчик ссылок облажается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 20:52:19 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
m52Я знаю, что можно передать параметр как var, но мне надо по-другому.Можете рассказать почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 22:57:40 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
Потому, что передать надо адрес переменной в не в процедуру, а в Thread и запомнить там в локальную переменную в области Private. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 06:17:21 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
Остается лишь учесть, что потоки не сразу запускаются так что указатель должен быть "бессмертным". GetMem, AllocMem и прочие в куче, а не на стеке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 07:52:34 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
Если уж страдать такой хренью, почему не сделать тупо глобальный string без всяких поинреров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 07:55:18 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
m52Потому, что передать надо адрес переменной в не в процедуру, а в Thread и запомнить там в локальную переменную в области Private. Совершенно не ясно, что именно в описанном сценарии мешает передавать строку. Никто не мешает передавать в потом строку и запоминать её в переменных потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 08:49:38 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
m52Потому, что передать надо адрес переменной в не в процедуру, а в Thread и запомнить там в локальную переменную в области Private. Вы же понимаете, что после этого к этой строке в потоке можно будет обращаться только через синхронизацию?.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 12:59:32 |
|
||
|
Передача в процедуру адреса строки
|
|||
|---|---|---|---|
|
#18+
GunSmoker, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 14:15:45 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39563207&tid=2041484]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
199ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 513ms |

| 0 / 0 |
