![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Лиходей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Такая задача:
изменить значение ноль терминальной строки "по месту" в процедуре, при этом параметр в процедуру передается по значению. схема такая:
Использование функции или var перед pCh: PChar не предлагайте, условия задачи жесткие. Не могу понять как это возможно, прошу помощи. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Не особо понял, но предложу: ну так а глобально pChSorse объявить?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
не понял проблемы... ну меняй в change pCh как тебе надо... ты же фактически указатель передал в процедуру. что тебе мешает изменять находящиеся по нему данные?
-------------------- There are always someone smarter than you... |
|||
|
||||
| Лиходей |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Пробовал не меняется. Сейчас код выложу...........
Если прототип обьявить как
Это сообщение отредактировал(а) Лиходей - 6.9.2009, 19:44 |
||||
|
|||||
| Лиходей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Блин, проверил с помощью точек останова адреса pChSorse и pCh совпадают.
|
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 6 Всего: 112 |
Нет? |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 5 Всего: 68 |
Лиходей, Не нравится var используй out...можно превратить процедуру в функцию...Заведи лишнюю глобальную переменную...Или работай с PChar как с указателем....
|
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: нет Всего: 13 |
Лиходей,
если допустимо поменять тип параметра:
-------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| CodeMonkey |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
А новая и старая строки по длинам как отличаются? В pCh можно записать ровно столько же или меньше символов, но не больше.
Кроме того:
Добавлено через 6 минут и 42 секунды P.S. Вообще задача выглядит подозрительно. Например:
Это сообщение отредактировал(а) CodeMonkey - 7.9.2009, 08:59 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
| Лиходей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Amphiluke, большое спасибо. То что нужно.
Значит нужно указывать компилятору конкретно сколько памяти выделять под строку? Если можно, в двух словах, прокоментируйте свой код. Разница между вашим кодом и моим в том, что вы используете функции GetMem, FreeMem (по большому счету). Как я и говорил адреса фактического и формального параметра оказались одинаковы, однако без явного выделения памяти код не работает. Хотя по логике должен, PChar это же просто указатель на место в памяти первого символа строки. Думаю не мне одному будет интересно. ~FoX~, что вы имели ввиду?
|
|||
|
||||
| MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
конечно. например с пом. SetLength.
по какой такой логике? вообще перечитай что CodeMonkey написал. подумай. -------------------- There are always someone smarter than you... |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |