![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kline2005 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.2.2005 Репутация: нет Всего: нет |
Братцы, кто нибудь знает как программно
(во время выполнения) создать и заполнить структуры? |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Непонятно, что имеется в виду.
Можно написать функции, прицепить их к кнопочкам, например. В функции динамически создавать структуры и заполнять. Потом не забыть поудалять с помощью delete.
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| kline2005 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.2.2005 Репутация: нет Всего: нет |
Я имею ввиду именно создание структуры
типа: char a = Edit1->Text = ...//тип поля char b = Edit2->Text = ...//длина поля struct { a[b]; }; и т.д.[s] |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
создавать динамически структуры, не описанные в исходнике, невозможно!
Невозможно создать "то, не знаю что". |
|||
|
||||
| Peter |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Можно, по крайней мере, выкрутиться следующим образом: держать кучу памяти
и интерпретировать, допустим, первые четыре байта как размер структуры, вторые - количество полей, дальше - описание их типов, а все остальное - это данные. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
||||
|
|||||
| gepard |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
А зачем её держать, если можно в любой момент динамически выделить? Сам же привёл пример... А по поводу дин. структур: Можно... Допустим нам надо загрузить её из файла, точнее создать из файла... Содержимое файла:
Теперь в твоей проге-анализаторе, должны быть ссылки, например:
С их помощью ты будешь хранить значения переменных. Т.е. когда прог видит надпись float my, она автоматически выделяет память под хранение значения переменной типа float в float_array. Для int'а тоже самое. Теперь, как обратиться к этой переменной? У тебя должна быть структура(в самой проге-анализаторе):
Первый аргумент - имя переменной("my"), второй - указатель на область, где храниться эта переменная. Хотя... Можно было без первых массивов... что-то я подзабыл про void*. Ну да ладно... обе реализации возможны... Когда идёт, например, присвоение переменной нового значения:
прога-анализатор должна смотерть на имя переменной и идти в соответствующую область памяти для присвоения нового значения. Это сообщение отредактировал(а) gepard - 8.2.2005, 10:31 -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
||||||||||
|
|||||||||||
| IEZ |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 10.2.2005 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Громкое заявление. kline2005 Можно попробовать на основе STL. Только тебе надо определиться составляешь ты структуру массива переменных или массив структур. А так подойдет и vector из STLя. Добавлено @ 00:48
Не удобно, нужно заранее выделять. А там динамические добавляй или удаляй. -------------------- "Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух. |
||||
|
|||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Никак. Сначало надо определить, а потом создавать и заполнять эти структуры. Это сообщение отредактировал(а) bel_nikita - 11.2.2005, 01:44 |
|||
|
||||
| IEZ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 10.2.2005 Где: Санкт-Петербург Репутация: нет Всего: 3 |
bel_nikita А зачем тогда придумали VARIANT? Вот ссылка на эту колбасню, кстати из MSDN: VARIANT and VARIANTARG С помощью которого можно динамически грузить переменные, типы которого ты можешь подгружать. Ну а скрестив vector с VARIANT, получается std::vector<VARIANT>, то что и требовалось в теме. А дальше уж kline2005 нужно только самому подумать где и когда это все подгружать. -------------------- "Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух. |
|||
|
||||
| bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
IEZ
Приведи пример, пожалуйста:
|
||||
|
|||||
| IEZ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 10.2.2005 Где: Санкт-Петербург Репутация: нет Всего: 3 |
bel_nikita Ну даже на одних векторах, что-то типа этого:
P.S. Можно правда и через класс свой забабахать. Это сообщение отредактировал(а) IEZ - 11.2.2005, 12:33 -------------------- "Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Дык, это ясно
З.Ы.: через VARIANT хотел. Хотел посмотреть, как это юзается |
|||
|
||||
| IEZ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 10.2.2005 Где: Санкт-Петербург Репутация: нет Всего: 3 |
-------------------- "Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух. |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Ведь функции printf, scanf и прочие с неопределенным числом параметров - они же динамически распознают типы. И тут так же сделать.
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |