Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255

Загрузка базы из текстового файла в StringGrid с возможностью выбора

20.05.2020, 14:25. Показов 5143. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется вот такая программа в которой есть StringGrid со столбцами «буквы» и «цифры».
В папке с программой в папке db есть файл текстовой базы db.txt, он имеет такую же структуру — столбец «буквы» и столбец «цифры».

Необходимо сделать так чтобы при нажатии на любую ячейку столбца «буквы» появлялся выпадающий список и в нем отображались данные из столбца «буквы» файла db.txt. После того как значение в выпадающем списке выбрано в ячейке этой строки в столбце «цифры» должно появиться значение для этой ячейки из файла db.txt.

Как это сделать?
Миниатюры
Загрузка базы из текстового файла в StringGrid с возможностью выбора  
Вложения
Тип файла: 7z пример.7z (3.66 Мб, 9 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2020, 14:25
Ответы с готовыми решениями:

Шифрование текста c возможностью выбора любого текстового файла
Система шифрования текста. Для шифрования использовать метод подстановки, заключающийся в замене одних букв алфавита на другие, простейший...

Загрузка данных из файла с возможностью выбора файла
Всем доброго времени суток. У меня возник такой вопрос как организовать выбор файла с данными на языке СИ, пришла мысль в голову, что можно...

Загрузка из текстового файла в StringGrid
доброго времени суток! помогите пожалуйста новичку с решением задачи. задача такова: имеются StringGrid и текстовый файл следующего...

36
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 15:38
это грид, в нем нет стандартного combobox для выбора
0
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 17:10  [ТС]
qwertehok, в нем есть SelectEditor
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 17:12
ну если есть выпадающий список - то читай файл в StringList и показывай в Combobox одну колонку
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33417 / 21525 / 8238
Регистрация: 22.10.2011
Сообщений: 36,932
Записей в блоге: 12
20.05.2020, 17:29
Цитата Сообщение от qwertehok Посмотреть сообщение
это грид, в нем нет стандартного combobox для выбора
Ну-ну... Еще раз: Лазарус - не Дельфи...

Добавляем в StringGrid нужное количество столбцов, и делаем в нужных столбцах соответствующий PickList:


Все нормально отображается:
1
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 17:30  [ТС]
qwertehok, вот что получается. но это не совсем правильно отображается. файл базы создан и редактируется в другом StringGrid созданном в lazarus. как это правильно сделать для такого типа базы данных?
Вложения
Тип файла: 7z пример_.7z (3.66 Мб, 4 просмотров)
0
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 17:31  [ТС]
volvo, какой у вас симпотичный lazarus!
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 17:33
Цитата Сообщение от volvo Посмотреть сообщение
Еще раз: Лазарус - не Дельфи...
да да
я уже понял как у вас все круто

Цитата Сообщение от meteor12 Посмотреть сообщение
какой у вас симпотичный lazarus!
тема наверняка какая то в линуксе
1
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 17:47  [ТС]
qwertehok, вот что получается. он просто загружает все содержимое базы в выпадающий список. но надо чтобы все правильно работало как в начале написано
Pascal
1
2
3
4
5
6
7
8
9
procedure TForm1.StringGrid1SelectEditor(Sender: TObject; aCol, aRow: Integer;
  var Editor: TWinControl);
begin
  if ACol = 1 then // второй столбец с ComboBox
begin
  Editor := StringGrid1.EditorByStyle(cbsPickList);
  TCustomComboBox(Editor).items.loadfromfile('db/db.txt'); // данные из файла для столбца буквы
end;
end;
Миниатюры
Загрузка базы из текстового файла в StringGrid с возможностью выбора  
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 17:52
Цитата Сообщение от meteor12 Посмотреть сообщение
вот что получается. он просто загружает все содержимое базы в выпадающий список.
а кто то писал про
Цитата Сообщение от meteor12 Посмотреть сообщение
он имеет такую же структуру — столбец «буквы» и столбец «цифры».
к тому же я говорил что файл надо загружать в StringList, но это если у файла точно 2 колонки
а у тебя чуть ли не xml
1
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 18:08  [ТС]
qwertehok, структура базы именно такая же. но если загружаю в StringGrid как указано ниже, то получается что при нажатии на ячейку сразу загружается вся база в таблицу. при этом выпадающий список пуст.

Pascal
1
2
3
4
5
6
7
8
9
procedure TForm1.StringGrid1SelectEditor(Sender: TObject; aCol, aRow: Integer;
  var Editor: TWinControl);
begin
  if ACol = 1 then // второй столбец с ComboBox
begin
  Editor := StringGrid1.EditorByStyle(cbsPickList);
  StringGrid1.loadfromfile('db/db.txt'); // данные из файла для столбца буквы
end;
end;
Содержимое файла базы:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
  <grid version="3">
    <saveoptions create="False" position="False" content="True"/>
    <content>
      <cells cellcount="14">
        <cell1 column="0" row="0" text="#"/>
        <cell2 column="0" row="1" text="1"/>
        <cell3 column="0" row="2" text="2"/>
        <cell4 column="0" row="3" text="3"/>
        <cell5 column="0" row="4" text="4"/>
        <cell6 column="0" row="5" text="5"/>
        <cell7 column="1" row="0" text="буквы"/>
        <cell8 column="1" row="1" text="ааааа"/>
        <cell9 column="1" row="2" text="бббб"/>
        <cell10 column="1" row="3" text="вввв"/>
        <cell11 column="2" row="0" text="цифры"/>
        <cell12 column="2" row="1" text="111"/>
        <cell13 column="2" row="2" text="222"/>
        <cell14 column="2" row="3" text="333"/>
      </cells>
    </content>
  </grid>
</CONFIG>
Миниатюры
Загрузка базы из текстового файла в StringGrid с возможностью выбора  
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 18:21
Цитата Сообщение от meteor12 Посмотреть сообщение
Содержимое файла базы:
это не база
это XML файл
он текстовый, но как текст его не прочитать просто так. его надо обрабатывать как XML

разумеется просто через loadfromfile ты его не прочитаешь
гугли "как в лазарусе прочитать xml"
1
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 18:37  [ТС]
qwertehok, поискал. ничего внятного не нашлось к сожалению.

подскажите если есть возможность.

загружать данные из такой базы в обычные Tedit просто:
Pascal
1
2
Form1.Edit1.text:= StringGrid1.Cells[1, StringGrid1.Row];
Form1.Edit2.text:= StringGrid1.Cells[2, StringGrid1.Row];
но как сделать чтобы это работало как описано в начале для загрузки в StringGrid пока не придумал.
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 18:43
Цитата Сообщение от meteor12 Посмотреть сообщение
подскажите если есть возможность.
https://wiki.freepascal.org/XML_Tutorial/ru
1
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 18:50  [ТС]
qwertehok, про загрузку XML в StringGrid там ничего не сказано.
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 18:53
а такого и не будет
ты XML разбираешь и в цикле грузишь в грид

главное понять как разобрать. нужно научиться обращаться к элементам xml и читать их в переменную
1
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 19:00  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
ты XML разбираешь и в цикле грузишь в грид
главное понять как разобрать. нужно научиться обращаться к элементам xml и читать их в переменную
если есть пример как это сделать похожий на данный вариант. буду очень признателен.
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
20.05.2020, 19:09
по ссылке все есть
Code
1
2
3
4
5
6
 <?xml version="1.0"?>
 <request>
   <request_type>PUT_FILE</request_type>
   <username>123</username>
   <password>abc</password>
 </request>
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
  PassNode: TDOMNode;
  Doc:      TXMLDocument;
 begin
  // Читаем xml файл с жесткого диска
  ReadXMLFile(Doc, 'c:\xmlfiles\test.xml');
  try
    // Запрашиваем узел с именем "password"
    PassNode := Doc.DocumentElement.FindNode('password');
    // Выводим значение выбранного узла
    //Неправильный способ
    WriteLn(PassNode.NodeValue); // вывод будет пустым
    //Правильный способ
    // Текст узла - это отдельный дочерний узел
    WriteLn(PassNode.FirstChild.NodeValue); // правильно выведет "abc"
    // Альтернативный способ
    WriteLn(PassNode.TextContent);
  finally
    // В завершении делаем Free для документа
    Doc.Free;
  end; 
end;
вот это и есть чтение XML
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33417 / 21525 / 8238
Регистрация: 22.10.2011
Сообщений: 36,932
Записей в блоге: 12
20.05.2020, 19:30
Я просто оставлю это здесь...

Вложения
Тип файла: 7z db_strgrid.7z (117.0 Кб, 19 просмотров)
2
84 / 2 / 1
Регистрация: 07.04.2018
Сообщений: 255
20.05.2020, 21:31  [ТС]
volvo, работает не совсем так.
например если в столбце "цифры" выбрано значение "ааа" то в ячейке напротив в столбце "буквы" значение "111" должно появиться автоматически.
если выбрано "ббб", то значение "222" должно появиться в ячейке напротив автоматически

Добавлено через 6 минут
в ячейках столбца "цифры" выпадающий список не нужен. туда должны загружаться цифры из базы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2020, 21:31
Помогаю со студенческими работами здесь

Загрузка данных из Excel и текстового файла в StringGrid (Borland Builder C++)
Здравствуйте! Не подскажите как осуществить загрузку данных из Excel и текстового файла в StringGrid?

StringGrid неправильно отображает русские буквы из текстового файла базы txt
StringGrid неправильно отображает русские буквы из текстового файла базы txt. Программу писал когда была установлена винда 8.1. Все...

Импорт XLS файла в PHP/MYSQL с возможностью выбора файла из окна дерева каталогов
Здрасьте! В проекте подключена библиотека PHPExcel. Имеется файл XLS, экспортированный из БД Mysql (подготовленный для будущего...

Сохранение из StringGrid массива в файл и загрузка из файла в StringGrid
Всем доброго времени суток =) У меня есть загрузка массива из StringGrid на Delphi 2010: //загрузка из файла procedure...

Загрузка файла с Интернета с возможностью дозагрузки
Добрый день! Как можно загрузить файл с Интернета с возможностью дозагрузки? И как узнать скорость скачивания данного файла?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru