Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78

Работа с INI и Microsoft Office

14.07.2020, 08:45. Показов 1830. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Возник вопрос по реализации поиска и сопоставления параметров из ini файла.
Есть ini с содержанием типа:
[Москва]
Text=№324234 от 18.02.2020
[Санкт-Петербург]
Text=№232442 от 20.03.2020

и т.п
Из Excel выгружается столбец с перечислением городов.
Далее я сохраняю в Word каждый город в отдельный документ.
И также мне требуется в каждый документ прописать значения из ключейText соответствующий городу.
Примерно так:
Delphi
1
Word.Selection.find.execute (FindText := '%INFO%', replacewith := Ini.ReadString('NAMEGOR','Text',NULL);
Города могут меняться. Как можно реализовать перебор секций из ini и сопоставить их c городами из столбца в Excel?
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2020, 08:45
Ответы с готовыми решениями:

работа с microsoft office interop
Добрый день. В ворде есть способ получить содержимое файла из поврежденного файла(который не открывает ворд). Делается это так, создать...

Работа c Microsoft Office Interop Word
Есть программа, которая заполняет Вордовские шаблоны. Взаимодействие с Word осуществляется с помощью Microsoft Office Interop Word. До...

Работа с Microsoft.Office.Interop.Excel
Всем доброго времени суток. Возникает проблема работы с библиотекой Microsoft.Office.Interop.Excel Начинаю работать с Excel так: ...

28
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 11:44  [ТС]
Студворк — интернет-сервис помощи студентам
D1973, Сумма отмеченная красным берется из выражения
Delphi
1
StrToFloat(StringGrid1.Cells[2,I])-StrToFloat(StringGrid1.Cells[17,I]
Или 3 столбец минус 18 столбец в исходном файле Excel
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 11:46
Цитата Сообщение от D1973 Посмотреть сообщение
А откуда берется сумма, выделенная красным?
если я правильно понял, то это
Цитата Сообщение от Amilman1 Посмотреть сообщение
(FindText := '%VYCHET%', replacewith := StrToFloat(StringGrid1.Cells[2,I])-StrToFloat(StringGrid1.Cells[17,I]));
предположу, что из файла source_full.xls столбец С (сумма) минус столбец R (Вознаграждение НКО)

Добавлено через 49 секунд
Amilman1, пост #20 увидел?
0
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 11:51  [ТС]
mr-Crocodile, Да увидел, спасибо.
Но теперь при закрытии программы получаю сообщение:
---------------------------
Code
1
2
3
4
5
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: TIniFile x 2
205 - 220 bytes: UnicodeString x 2
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 12:00
какой ужас!!
у тебя же вообще не должно ничего работать!

ты же ini не присваиваешь.

должно быть

Delphi
1
2
3
4
5
6
7
procedure TForm16.Button5Click(Sender: TObject);
var
   ..
  Ini: Tinifile;
begin
try
   Ini := TInifile.Create(ExtractFilePath(ParamStr(0))+'setting.ini');
и в конце процедуры надо сделать
Delphi
1
Ini.Free;
или
Delphi
1
  FreeAndNil(ini);
и убери строчку с FormCreate
procedure TForm16.FormCreate(Sender: TObject);
begin
TInifile.Create(ExtractFilePath(ParamStr (0))+'setting.ini');
end;
1
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 12:07  [ТС]
mr-Crocodile, В Button5 я присваиваю ini
Delphi
1
2
3
4
5
6
7
8
procedure TForm16.Button5Click(Sender: TObject);
var
Word: variant;
I,j:integer;
Ini: Tinifile;
begin
try
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'setting.ini');
Скорее всего исходник вам скинул до сохранения проекта..
Вот только про Ini.Free; абсолютно забыл..
А в Create строка закомментирована.

Upd:
FreeAndNil(ini); решило проблему с утечкой памяти.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 12:12
Цитата Сообщение от Amilman1 Посмотреть сообщение
Скорее всего исходник вам скинул до сохранения проекта..
не надо так делать.

Цитата Сообщение от Amilman1 Посмотреть сообщение
Вот только про Ini.Free; абсолютно забыл..
А в Create строка закомментирована.
ок
0
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 12:16  [ТС]
mr-Crocodile,
И есть еще небольшой вопросик.
В Grid у меня выгружаются все поля данных включая и "Итого".
В связи с этим помимо файлов с наименованием предприятий, пример: "Имя Московское ГПАТП" я получаю документ Word "Имя Итого" который вообще не нужен
Сохранение происходит все там же по кнопке Button5

Как мне исключить обработку последней строки?
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 13:43
Лучший ответ Сообщение было отмечено Amilman1 как решение

Решение

Цитата Сообщение от Amilman1 Посмотреть сообщение
Как мне исключить обработку последней строки?
вижу два простых варианта

1) если в ячейке написано 'Итого' - то эту строчку игнорируем

2) в столбце B должно быть ID (кстати, привязку к INI можно было делать через ID - думаю, что это уникальное поле)
если в столбце B пусто - то эту строчку игнорируем

Добавлено через 3 минуты
на примере кода
Delphi
1
2
3
4
5
6
7
for I := 0 to StringGrid1.RowCount-1 do
begin
   if Trim(StringGrid1.Cells[0,I])<>'Итого' then begin
     // тут код сохранения
      Word.Documents.....
   end;
end;
или
Delphi
1
2
3
4
5
6
7
for I := 0 to StringGrid1.RowCount-1 do
begin
   if Trim(StringGrid1.Cells[1,I])<>'' then begin
     // тут код сохранения
      Word.Documents.....
   end;
end;
1
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 14:14  [ТС]
mr-Crocodile, Спасибо вам за оказанную помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.07.2020, 14:14
Помогаю со студенческими работами здесь

Создание и работа c файлами форматов Microsoft Office
Добрый день! Имеется следующая проблема: в VS 2010 разработано приложение которое создает и работает с файлами форматов Microsoft...

Крайне медленная работа Microsoft.Office.Interop.Word
Имею конструкцию такого плана: Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); ...

Некорректная работа с Microsoft.office.interop.excel.dll на других ПК
Всем добра! Понимаю, тема уже избита и много раз обсуждалась, но все же хотелось уточнить раз и навсегда На рабочей станции стоит ...

Использование Microsoft.Office.Interop.Word на компьютере без установленного пакета MS office
Есть приложение, которое использует Microsoft.Office.Interop.Word, на компах с установленным офисом 2010, все нормально работает, если...

Microsoft.Office.Interop для всех версий MS Office
Здравствуйте! Нашёл кучу околоподобных тем, но без нужных решений. Задача такая: Пишу на C# программу, которая использует Interop...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru