Man_Without_Face
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Открытие: procedure TfrmMain.acOpenExecute(Sender: TObject); begin SysUtils.DecimalSeparator := '.'; if param = 0 then //0- OX отчеты, 1-Kx отчеты begin if OpenDialog1.Execute then begin SaveCursor := Screen.Cursor; Screen.Cursor := crHourglass; try sXTR := OpenDialog1.Filename; sXML := ExtractFile(sXTR); //Функция распаковки файла except Application.MessageBox('Ошибка при разархивировании файла!', 'Ошибка!', MB_OK+MB_ICONSTOP); end; XML := TXMLDocument.Create(nil); XML.LoadFromXML(sXML); XML.Active := true; XML.Encoding := 'Windows-1251'; //Выставляю кодировку XML.SaveToFile('C:\zx.xml'); //Настраиваю соединение с xml файлом cdsHeader.Close; XMLTransform1.SourceXmlFile := 'C:\zx.xml'; XMLTransform1.TransformationFile := 'OXtrans.xtr'; //Файл трансформации в датасет cdsHeader.XMLData := XMLTransform1.data; try cdsHeader.Open; //cdsHeader - Древовидная структура (датасет в датасете, поле fields) cdsOX.Close; cdsOX.Open; except Application.MessageBox('Ошибка при открытии файла!', 'Ошибка!', MB_OK+MB_ICONSTOP); Screen.Cursor := SaveCursor; end; ....................................... Сохранение: procedure TfrmMain.acSaveAsExecute(Sender: TObject); begin SaveDialog1.FileName := sXTR; if SaveDialog1.Execute then begin SaveCursor := Screen.Cursor; Screen.Cursor := crHourglass; try //Настраиваю соединение для записи в xml файл XMLTransformProvider1.XMLDataFile := 'C:\zx.xml'; if param = 0 then begin XMLTransformProvider1.TransformRead.TransformationFile := 'OXtrans.xtr'; //Файл трансформации в датасет XMLTransformProvider1.TransformWrite.TransformationFile := 'toxmlOX.xtr'; //Файл трансформации в xml end else begin XMLTransformProvider1.TransformRead.TransformationFile := 'KXtrans.xtr'; //Файл трансформации в датасет XMLTransformProvider1.TransformWrite.TransformationFile := 'toxmlKX.xtr'; //Файл трансформации в xml end; cdsHeader.ApplyUpdates(-1); Ошибку при сохранении выдает вроде здесь CompressFile('C:\zx.xml', SaveDialog1.FileName); //Сжимаю файл Application.MessageBox('Сохранение прошло успешно', 'Сохранение', MB_OK); except Application.MessageBox('Ошибка при сохранении файла!', 'Ошибка!', MB_OK+MB_ICONSTOP); Screen.Cursor := SaveCursor; end; Screen.Cursor := SaveCursor; end else; end; |