Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
17 / 18 / 7
Регистрация: 06.12.2013
Сообщений: 179
1

Как правильно выгрузить StringGrid в структурированный файл

15.08.2017, 14:32. Просмотров 1079. Ответов 6
Метки нет (Все метки)

"выгрузить в формат пфр" не работает, на выходе должно быть как в (Пример файла запроса на валидацию.txt), что я делаю не так?
0
Вложения
Тип файла: 7z PF2.7z (18.1 Кб, 3 просмотров)
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2017, 14:32
Ответы с готовыми решениями:

Как правильно прочитать файл в StringGrid
Вот мой код для переноса данных из файла в StringGrid. Где-то ошибка, так как при нажатии на кнопку...

Файл: Выгрузить файл через нажатие кнопки pushButton и выгрузить его в listWidget
здравствуйте давно не заходил в QT и впринцепи им особо не когда не занимался не подскажите хочу...

Как правильно выгрузить Excel?
Dim oExcel As Object Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set...

Как правильно выгрузить Excel
Такой код.... Dim xl As New Excel.Application Dim xlw As Excel.Workbook Set xlw =...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
29726 / 19549 / 7664
Регистрация: 22.10.2011
Сообщений: 34,104
Записей в блоге: 6
15.08.2017, 15:07 2
Цитата Сообщение от eagle nest Посмотреть сообщение
как в (Пример файла запроса на валидацию.txt)
- это XML-файл, его нужно создавать вручную, автоматически Лазарус из StringGrid-а создавать XML не умеет.
0
17 / 18 / 7
Регистрация: 06.12.2013
Сообщений: 179
15.08.2017, 15:17  [ТС] 3
а я пытаюсь добавить строки в файл, т.к. колонок больше не будет. хочу прочитать их по очереди
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
29726 / 19549 / 7664
Регистрация: 22.10.2011
Сообщений: 34,104
Записей в блоге: 6
15.08.2017, 15:23 4
Лучший ответ Сообщение было отмечено eagle nest как решение

Решение

А... Ну да, еще и с кодировками проблема. Если сделать вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
procedure TForm1.BitBtn7Click (Sender: TObject);
var
  i: integer;
  s: string;
begin
  {----------инициализируме файлы-------------------}
  dest := TStringList.Create;
  {-------заполняем файл для импорта, заголовок------------}
  dest.Add ('<?xml version="1.0" encoding="Windows-1251"?>');  //начало файла...
  dest.add ('<ФайлПФР>');
  dest.add ('<ИмяФайла>' + edit1.Text + '</ИмяФайла>');
  dest.add ('<ДатаФормированя>' + DateEdit1.Text + '</ДатаФормированя>');    //Дата создания
  dest.add ('<ВерсияФормата>' + ComboBox1.Text + '</ВерсияФормата>');
  //версия формата
  dest.add ('<ТипФайла>' + ComboBox2.Text + '</ТипФайла>');
  dest.add ('<КоличествоЗаписейВфайле>' + Edit5.Text + '</КоличествоЗаписейВфайле>');
  dest.add ('<Валидация_запрос>');
  {-------------Заполняем дальше-----------------}
 
  for i := 1 to StringGrid1.RowCount - 1 do
  begin // <--- Вот этот begin был не на своем месте
    dest.Add ('<ИдентификаторЗапроса>' + StringGrid1.Cells[0, i] + '</ИдентификаторЗапроса>');
    dest.Add ('<СНИЛС>' + StringGrid1.Cells[1, i] + '</СНИЛС>');
    dest.Add ('<Фамилия>' + StringGrid1.Cells[2, i] + '</Фамилия>');
    dest.Add ('<Имя>' + StringGrid1.Cells[3, i] + '</Имя>');
    dest.Add ('<Отчество>' + StringGrid1.Cells[4, i] + '</Отчество>');
    dest.Add ('<ДатаРождения>' + StringGrid1.Cells[5, i] + '</ДатаРождения>');
    dest.Add ('<Пол>' + StringGrid1.Cells[6, i] + '</Пол>');
    dest.Add ('</Валидация_запрос>');
  end;
  //закрываем документ и сохраняем в файл
  dest.Add ('</ФайлПФР>');
 
  s := dest.Text;
  dest.Text := UTF8ToCP1251 (s); // <--- Вот оно, для записи файла в кодировке Win1251. В uses надо добавить LConvEncoding
 
  dest.SaveToFile (Edit3.Text);
  dest.Destroy;
end;
Внимательно смотрим 21 и 35 строки кода !!!
0
17 / 18 / 7
Регистрация: 06.12.2013
Сообщений: 179
15.08.2017, 15:29  [ТС] 5
спасибо volvo!
0
Эксперт Pascal/Delphi
2348 / 1269 / 1481
Регистрация: 29.08.2014
Сообщений: 4,579
16.08.2017, 03:01 6
17 строка должна быть после 21 наверное, или 29 после 30, а то блок "валидациязапрос" какой-то обрезанный получается
0
Модератор
6241 / 3950 / 1740
Регистрация: 21.01.2014
Сообщений: 16,565
Записей в блоге: 3
16.08.2017, 11:11 7
смотрю строку 16: а зачем руками задавать количество записей, если СтрингГрид уже заполнен? От количества строк и плясать...
Pascal
1
dest.add (Format('<КоличествоЗаписейВфайле>%d</КоличествоЗаписейВфайле>', [StringGrid1.RowCount - StringGrid1.FixedRows]);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2017, 11:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как выгрузить двоичный файл?
&lt;form enctype='multipart/form-data' .... - после выгрузки работают только текстовые.

Как выгрузить ТабДок в xml файл
Подскажите пожалуйста, есть обработка в которой присутствует поле Табличный документ, как выгрузить...

Как выгрузить данные из excel документа в m файл?
как выгрузить данные из excel документа в m файл?

Как выгрузить реквизит документа в XML файл
Добрый день! Подскажите, как выгрузить реквизит документа в XML файл? Создаю новую команду в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.