|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
Как перенести переменную типа TStringList в другой модуль23.01.2010, 02:03. Показов 4088. Ответов 11
Метки нет (Все метки)
Как перенести глобальную переменную типа TStringList в другой модуль (Unit2 например), чтобы она при этом сохранила свое значение?
Применение extern, static, включение модуля #include "Unit1.h" - не помогает. Переменная остается объявленной, а свое значение теряет, т.е. полностью опустошается при обращении к ней из другого модуля. Переменные других типов (float, int AnsiString) вызываются нормально, т.е. сохраняют значения. TStringList - все теряет Спасибо! P.S. ПО: С++ Builder 6
0
|
|
| 23.01.2010, 02:03 | |
|
Ответы с готовыми решениями:
11
Как скопировать строку из одного TStringList в другой Как перенести переменную из одного файла в другой? |
|
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
|
||||||||||||||||
| 23.01.2010, 02:41 | ||||||||||||||||
|
Да нэ может такого быть!
Unit1.cpp: на форме кнопка при ее нажатии:
Unit2.h:
появляются в Memo1
1
|
||||||||||||||||
|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
| 23.01.2010, 04:10 [ТС] | |
|
Сергей, спасибо огромное! Так попробовал - отлично работает.
Вот только у меня нет 2-й формы. Есть одна форма и два модуля. А так не получается настроить, т.к. во 2-м модуле нет объявления класса Form2... Подскажите пожалуйста, в идеале такой же примерчик, только с Form1, Unit1 и Unit2. Еще раз спасибо! Добавлено через 18 минут Короче говоря, у меня изначально была одна форма и модуль. Здесь я работал с переменной типа TStringList. Затем, чтобы не нагромождать один юнит процедурами, я создал Unit2. Но без еще одной формы. Всеми переменные благополучно туда переехали. А вот со TStringList как-то не выходить. Вот и ваш пример я тоже кручу. С двумя формами все отлично работает. Когда одну форму удаляешь - не выходит...
0
|
|
|
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
|
|
| 23.01.2010, 04:11 | |
|
Конечно! Те же яйца, тока в профиль.
Во вложенном вайл проекта. Если что не понятно - спрашивайте.
1
|
|
|
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
|
|
| 23.01.2010, 04:21 | |
|
Вот.. с двумя юнитами:
1
|
|
|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
| 23.01.2010, 04:36 [ТС] | |
|
Ой, спасибо огромное, все отлично работает.
Сейчас буду пробовать все сделать по аналогии в своей программе.. Еще раз спасибо!
0
|
|
|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
| 23.01.2010, 05:16 [ТС] | |
|
Вы знаете, стыдно признаться, но опять не получается так, как хотелось бы.
В последнем примере (с тремя модулями) несмотря на то, что используется Dummy класс модуля 2, текст на форму_1 все равно выводится из модуля_1. А мне нужно текст, заданный в модуле_1, вытащить в любую процедуру модуля_2 или 3 (через переменную TStringList). Во вложенном файлике я добавил пару кнопок и две пустые процедурки: Показать тот же текст (заданый в модуле_1), только выводя его из Unita2, а также из Unita3. Еще надеюсь на ваш спортивный интерес ![]() Спасибо!
0
|
|
|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
| 23.01.2010, 15:07 [ТС] | |
|
Вдохновленный вашим примером с двумя формами, я вчера до 4.00 утра пытался применить вашу идею с классом-пустышкой Dummy, но так желаемого и не получилось. Уже сделал так, что программа компилируется и запускается без ошибок, но когда нажимаю [Button1], выдает ошибку при вызове переменной TStringList в Unit2 из Unit1.
Видимо, класс TForm имеет какое-то уникальное свойство, которого не хватает классу Dummy...
0
|
|
|
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
|
|
| 23.01.2010, 17:22 | |
|
Скиньте Ваш пример, пожалуйста, потому, как тот пример, что Вы послали - это тот же пример, что я Вам послал в моем втором сообщении. Видимо, вы не сохранив проект и при открытом билдере заархивировали содержимое папки Вашего проекта и выложили его.
1
|
|
|
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
|
|
| 23.01.2010, 17:52 | |
|
Вот еще один пример.
В классе TDummy объявленны 2 ф-ции и один указатель на TStringList. Одна ф-ция устанавливает указатель, другая возвращает его. Указатель на класс TDummy * Dummy объявлен сейчас глобально. Память под него выделяется при создании главной формы. И сразу же используется ф-ция установки указателя на TStringList из главной формы. После этого можно использовать ф-цию получения указателя на TStringList из TDummy в любом модуле. Пример этого использования происходит при нажатии на кнопку в Form1 и Form2. Если у Вас что-либо не будет получаться, пишите, или еще лучше, если есть скайп дайте свое скайп имя я свяжусь.
1
|
|
|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
| 23.01.2010, 20:09 [ТС] | |
|
Вот теперь все получилось на 100%
![]() Проблема довольно очевидна: Проэкт состоял из Form1, Unit1. По мере роста программного кода появилась потребность в создании еще одного модуля Unit2, а заодно и перетащить все используемые в Unit1 переменные, классы, массивы и т.д. Так вот проблема возникла только с указателями типа TStringList. Из полученного результата видно, что такие переменные переносятся в другой модуль довольно таки не тривиальным способом (требуется новый класс, множество дополнительных указателей и т.д). В отличие от обычных переменных и массивов, где просто достаточно добавить ключевое слово extern. Но, как говориться, опыт - великое дело! ![]() В приложении я сделал то, что хотел с самого начала. Еще раз спасибо! -------------------------- P.S. Был бы благодарен, если бы вы черкнули пару строк своих мыслей в след. теме: Создание базы данных (ошибка)
0
|
|
|
5 / 5 / 0
Регистрация: 22.01.2010
Сообщений: 48
|
|
| 23.01.2010, 21:59 [ТС] | |
|
Кстати, как временное решение, сохранил переменную типа TStringList в виде массива AnsiString, который, в свою очередь, благополучно переехал во 2-й модуль..
0
|
|
| 23.01.2010, 21:59 | |
|
Помогаю со студенческими работами здесь
12
Как конвертировать переменную типа Double в переменную типа String? Как добавить текст в список типа TStringList Как строковую переменную(String) сканвертировать в переменную типа(Real) Как передать из ACCESS переменную STRING в переменную окружения (типа CMD команды SET=) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|