![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Pcrepair |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
Добрый день. есть код:
1. нажимает на кнопку1, строки копируются из МЕМО1 в ПЕРЕМ, обрабатываются и возвращаются. тут все нормально. в ГлобПЕрем gRequestStrings строки есть 2. нажимаем на кнопку2. по идее в gRequestStrings должны сохранятся данные, но их там нет. кроме того почемуто нет необходимости в создании gRequestStrings при запуске программы ВОПРОС: Что получается? ДЕЛФИ без разрешения создает-уничтожает gRequestStrings при нажатии кнопки1? З.Ы. только не надо о вреде ГлобПерем. это чиста учебный код, для изучения ДЕЛФИ --------------------
Сборник рабочего кода Процедур и Функций DelPhi http://validcoderepo.narod.ru/ |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Посмотри внимательно на строки 7,10,14
Это сообщение отредактировал(а) Чучмек - 1.7.2012, 11:18 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Да, вы однако не понимаете, что делаете....
Переменная типа TStringList это всего навсего указатель на возможный экземпляр класса, до того как ей что-то присваивается она равна nil, как только выполните SomeVar:=TStringList.Create в неё будет записан указатель на экземпляр класса, который создали и с ним можно работать.
Это не перенос строк, это всего лишь одно значение указателя записали в другое, и после этой операции у вас обе эти переменные ссылаются на один и тот же объект. Копирование осуществляется по-другому. Странно что ошибки не кидает, потому что вы ранее уже уничтожили объект... ну просто видимо там что-то адекватное есть в памяти, вот и не кидает... Вместо Напишите вот так FreeAnNil(DataIn) и тогда вы получите милую ошибку при вызове ShowMessage(собственно которая и должна быть -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| XperT |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 19.8.2006 Репутация: нет Всего: 4 |
Я вам еще в предыдущей теме объяснял по поводу указателей как раз чтобы избежать подобных ситуаций. То же самое я писать еще раз не буду, если вам не интересно, то и мне тоже. Но на ошибки укажу:
Это не перенос строк, это присвоение указателей. После этого gRequestStrings и DataOut указывают на один и тот же объект. В конце этой функцмм вы убиваете этот объект.
Не работает, ваш вывод основан на ложных представлениях описанных выше.
Странно, что ошибку не выбивает, так как по сути gRequestStrings в этот момент указывает на "мусор" в памяти процесса. |
||||||
|
|||||||
| Pcrepair |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
DarkProg
вообще правильно было gRequestStrings.Text := DataOut.Text; сразу недопонял Всем спасибо --------------------
Сборник рабочего кода Процедур и Функций DelPhi http://validcoderepo.narod.ru/ |
|||
|
||||
![]()
|
| Правила форума "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. |