|
0 / 0 / 0
Регистрация: 10.08.2019
Сообщений: 21
|
|
Builder 6 Файл: Как загрузить в динамически создаваемый массив булевых значений информацию из текстового файла?25.09.2019, 17:39. Показов 3703. Ответов 34
Метки нет (Все метки)
Уважаемые форумчане!
Кто знает, как загрузить в динамически (при запуске программы) создаваемый массив булевых значений информацию из текстового файла? Есть massive.txt, в котором прописаны через пробел значения: 0 0 1 0 0 1 0 1 и т. д. Соответственно, там, где 0 - должно в массиве быть значение false (или тот же ноль), где 1 - значение true (или единица) Как это реализовать при загрузке формы в событии OnCreate ? Или, может, лучше для этой цели использовать какой-либо иной формат, как .ini или .xml ? Буду рад любым дельным подсказкам. Спасибо. С уважением, QuantumSH.
0
|
|
| 25.09.2019, 17:39 | |
|
Ответы с готовыми решениями:
34
Загрузить информацию из текстового файла в StringGrid Запись в динамически создаваемый файл |
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
||||||
| 25.09.2019, 22:11 | ||||||
|
QuantumSH,
а что мешает при старте программы в Form загрузить файл massive.txt?
00100101 и читать текст как булевый параметр.
0
|
||||||
|
|
|
| 26.09.2019, 01:49 | |
|
1
|
|
|
Модератор
|
||||||
| 26.09.2019, 06:02 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 10.08.2019
Сообщений: 21
|
||||
| 26.09.2019, 14:33 [ТС] | ||||
|
Давайте разбираться.
Дальше идет загрузка списка из файла; что делает этот оператор - Наконец, происходит преобразование строк в булевые значения - формирование нового булевого списка - оператором в цикле 1) Что делает метод CommaText и 2) Как потом обратиться к конкретному значению массива по индексу? Так - bool b = B[i] ???
0
|
||||
|
|
||
| 26.09.2019, 15:06 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 10.08.2019
Сообщений: 21
|
|
| 26.09.2019, 15:22 [ТС] | |
|
0
|
|
|
Модератор
|
|
| 26.09.2019, 16:18 | |
|
QuantumSH, смотрите, у Вас данные представлены одной строкой, в которой данные разделены пробелом. Когда Вы считываете содержимое файла в элемент списка TStringList - он у вас помещается в этот список так, как есть, т.е. одной строкой... Но у Ваших данных в этой строке есть четкий разделитель - пробел. Поэтому мы сначала загрузим файл в этот список строк, потом преобразуем именно к тому виду: одно значение на одной строке. Для этого и используется метод CommaText; вообще-то этот метод считает разделителями запятую (ибо "comma" - запятая), но и пробел так же учитывается, как разделитель строк. В итоге из строки "0 0 1 0 1" получим список строк вида
0 0 1 0 1 Дальше, я думаю, понятно... Проходим циклом по этому списку и переводим каждое очередное значение в булеву переменную (см. справку по функции StrToBool()), после чего записываем это булево значение в булевский массив... После этого, да, Вы можете обратиться к любому элементу вектора (динамического массива, если Вам так проще) по его индексу, учитывая, что индексация начинается с 0... Ну и заканчивается B.Size()
0
|
|
|
0 / 0 / 0
Регистрация: 10.08.2019
Сообщений: 21
|
|||||||
| 26.09.2019, 16:23 [ТС] | |||||||
|
Скажем, я проверяю значение элементов, и если оно истинно - исполняю какие-то действия:
0
|
|||||||
|
Модератор
|
||||||
| 26.09.2019, 17:05 | ||||||
|
Ну, даже по синтаксису у Вас конструкция неправильная...
А вот лично у меня понимания точного нет, что делать надо в случае, когда очередной элемент массива истинный и когда он ложный... В общем случае...
0
|
||||||
|
0 / 0 / 0
Регистрация: 10.08.2019
Сообщений: 21
|
|
| 26.09.2019, 17:08 [ТС] | |
|
Спасибо большое, буду пробовать реализовывать!
0
|
|
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
|||
| 26.09.2019, 22:15 | |||
|
Не по теме:
копи паст так и не смог поправить. редактирование поста загружалось очень долго , плюнул , оставил как есть. и всегда выскакивает по два раза ответ через 15 сек :D целый вечер пытаюсь отредактировать свое сообщение ![]() QuantumSH, получилось реализовать? ![]() ![]() QuantumSH, решение было полностью написано от D1973
0
|
|||
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
||||||
| 26.09.2019, 22:28 | ||||||
|
QuantumSH,
0
|
||||||
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
|
| 26.09.2019, 22:28 | |
|
все, я устал постоянно редактировать.
0
|
|
|
Модератор
|
|
| 27.09.2019, 04:19 | |
|
lifeforce, я бы не стал глобально создавать СтрингЛист... Он нужен всего на один раз: получить разбитый список для перенесения его в массив. После этого "мавр сделал свое дело, мавр может уходить"... А Вы его оставляете до тех пор, пока существует сам модуль... Самое ему место для объявления - там же, где массив формируется, в конструкторе то бишь... Отработал конструктор - удалился СтрингЛист...
0
|
|
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
|||||||
| 27.09.2019, 08:12 | |||||||
![]()
0
|
|||||||
|
Супер-модератор
|
||||||
| 27.09.2019, 12:32 | ||||||
|
Стесняюсь спросить, а средств C++ уже недостаточно? Собственно, одна строка кода:
3
|
||||||
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
|
| 27.09.2019, 21:49 | |
|
volvo,
не надо стеснятся все мы здесь чтоб помогать друг другу. мне всегда нравятся ваши решения! ![]() только вот создатель сего поста так и не появляется.
0
|
|
|
0 / 0 / 0
Регистрация: 10.08.2019
Сообщений: 21
|
||
| 27.09.2019, 21:55 [ТС] | ||
|
D1973, спасибо, ВСЕ работает.
Но то, что мне нужно, я реализовал лишь на 30%. Потому что я изначально думал загружать значения в простой булев массив, Вы же порекомендовали вектор, с которым я никогда не работал. Возможно, он лучше, но он и сложнее. Во-первых, список (или вектор) должен быть обязательно глобальным, должен существовать во все время выполнения программы. Для чего? Ответ: программа динамически создает некие компоненты, нумеруя их (назовем их условно component1, component2 и т.д.). При загрузке программа читает значения массива, и там, где единицы, - сответственно индексам создает компоненты с индексами "единиц". Скажем, у меня 01001000110 - 11 значений; единицы стоят на 1-ом, 4-ом, 8-ом и 9-ом местах: программа создаст компоненты с номерами 1, 4, 8 и 9. Это - реализовано. Но пользователь может в процессе выполнения программы создать иные компоненты, и тогда программа присваивает им ОСТАВШИЕСЯ номера - по порядку: component2, component3, component5 и т.д. - от 1 до 10. Это также реализовано, перебором значений того же вектора, и если находится ноль - создается компонент с соответствующим номером, значения с единицей пропускаются. Но пользователь может и удалить некоторые из уже загруженных компонентов, и надо, чтобы значение вектора, соответствующее индексу компонента, изменилось с 1 в 0 - так в векторе как бы освобождается индекс, который опять же может быть присвоен когда-то позже созданному компоненту. КАК это реализовать? push вставляет в конец, пробовал еще at - не работает... Теперь следующее. Надо, чтобы после закрытия программа уже не читала из файла, а записывала в файл индексы новых компонентов, так, чтобы, к примеру, запись 01001000110 изменилась соответственно новой модели программы, учитывая вновь созданные и (или) удаленные компоненты. Как обратно из вектора записать значения в текстовый файл? Следует ли повторно конвертировать значения в список StringList? Пока все... ![]() Добавлено через 2 минуты
0
|
||
|
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
|
|||||||
| 27.09.2019, 22:35 | |||||||
|
и очень легко.
[quote="QuantumSH;13858947"] а я собственно ничего и не предлагал - если конечно это относится ко мне. я просто озвучил решение от D1973 надеюсь хоть чем то помог к достижению решения задачи. ![]() Не по теме: почему всегда сообщение дублируется два раза через 15 секунд?
0
|
|||||||
| 27.09.2019, 22:35 | |
|
Помогаю со студенческими работами здесь
20
Как считать информацию из текстового файла и записать в динамический массив? Динамически создаваемый массив Combobox Динамически создаваемый массив в свойствах класса
Из текстового файла переписать информацию в другой текстовый файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|