Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связь математических пакетов с делфи, MathCAD и Delphi 
:(
    Опции темы
Agent_Smit
  Дата 12.2.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 11.2.2007

Репутация: нет
Всего: нет



как мне связать MathCAD с Delphi ?

идея:

в маткаде идёт вся обработка... делать это удобнее именно там так как в делфи придётся писать для этого кучу ненужных математических функций, которые уже встроенны в mathCAD ... (как говорится  - зачем придумывать велосипед? smile )

изначально исходные данные передаются в MathCAD, в нём всё считается и затем по ButtonClick выводится на экран... (в виде таблицы или ещё чего, это не суть важно... )  
важно то что для обработки резуьльтатов не хотелось бы чтобы запускался MathCAD  ... чтобы был просто файл с шаблоном для расчётов... который бы лежал в папке с моей программой...  


можно ли так сделать.. и если можно -  то как ?? smile
PM MAIL   Вверх
Agent_Smit
Дата 4.5.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 11.2.2007

Репутация: нет
Всего: нет



никто не знает как это сделать?
PM MAIL   Вверх
Mannerghaim
Дата 4.7.2010, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 10.6.2008
Где: Москва

Репутация: нет
Всего: нет



Вопрос.
как реализовать связь Delphi с MathCAD ?
Вводим данные в Delphi , импортируем их в MathCAD, там идёт расчёт, после чего полученные результаты снова выводятся в Delphi
каким способом это можно сделать?
PM MAIL WWW   Вверх
Keeper89
Дата 4.7.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: нет
Всего: 58



Если у Вас установлен MathCad в справке должно быть что-то вроде
http://www.ptc.com/WCMS/images/58876/58876..._img_step_7.jpg
В 14 версии есть Developer's Reference, в котором есть информация по работе с объектами среды из сторонних приложений.


--------------------
PM MAIL WWW   Вверх
Mannerghaim
Дата 4.7.2010, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 10.6.2008
Где: Москва

Репутация: нет
Всего: нет



народ подскажите пожалуйста
почитал маткадовскую справку, понял кое чего

итак есть программа в маткаде которая считает выражение: A+B

пишем её так :

Код


A:=Re(in0)
B:=Re(in1)
C:=A+B
out0:=C



далее в делфи я кидаю компонент OleContainer1, присобачиваю туда этот файл маткадовский
кидаю 2 компонента Edit1 и Edit2
туда я буду вводить 2 слагаемых числа

кидаю кнопку и пишу в ней следующее

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
   with OleContainer1 do
      begin
      x1:=StrToInt(Edit1.text);
      y1:=StrToInt(Edit1.text);
        Run;
          OleObject.SetComplex('in0', x1, 0);
           OleObject.SetComplex('in1', y1, 0);
          OleObject.Recalculate;
          z2:=OleObject.GetComplex('out0', out_data, out_Buf);
          label1.Caption:=IntToStr(z2);
      end;

end;



вопрос
ввожу в едит1 и в едит2 числа: 2 и 3

результат вычислений в маткаде должен быть 5
но в метку label1 выдаёт результат 0 !!

почему он так считает?

PM MAIL WWW   Вверх
Keeper89
Дата 5.7.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: нет
Всего: 58



Mannerghaim, прикрепите маткадовский файлик по сложению 2-х чисел.


--------------------
PM MAIL WWW   Вверх
Mannerghaim
Дата 5.7.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 10.6.2008
Где: Москва

Репутация: нет
Всего: нет



Я же в коде вроде выше написал
в маткадовском файлике написано тока вот что:


Код

A:=Re(in0)
B:=Re(in1)
C:=A+B
out0:=C



На всякий пожарный , прикрепил сам маткадовский файлик, но этот форум не принимает формат mcd, я его запаковал раром.

P.s. оч.прошу помочь... диплом горит... :(

Это сообщение отредактировал(а) Mannerghaim - 5.7.2010, 18:51

Присоединённый файл ( Кол-во скачиваний: 24 )
Присоединённый файл  001.rar 5,12 Kb
PM MAIL WWW   Вверх
Keeper89
Дата 5.7.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: нет
Всего: 58



Вот тестовый код:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, ActiveX, Mathcad_TLB;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    edt2: TEdit;
    btn1: TButton;
    edt3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }

    MC: IMathcadApplication;
    WC: IMathcadWorksheets;
    WS: IMathcadWorksheet;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  a, b, c: Real;
begin

  a := StrToFloat(edt1.Text);
  b := StrToFloat(edt2.Text);

  MC := CreateOleObject('Mathcad.Application') as IMathcadApplication;
  WC := MC.Worksheets;
  WS := WC.Open(ExtractFilePath(ParamStr(0)) + 'test.xmcd');

  try
    try

      WS.SetValue('in0', a);
      WS.SetValue('in1', b);
      WS.Recalculate();

      c := (WS.GetValue('out0') as INumericValue).Real;
      edt3.Text := FloatToStr(c);

      ShowMessage('Готово!');

    except
      on E: Exception do
        ShowMessage(E.Message);
    end;

  finally
    WS.Close(mcDiscardChanges);
    MC.Quit(mcDiscardChanges);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OleInitialize(nil);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  OleUninitialize;
end;

end.

В прикреплении проект и файл MathCad'а.

Delphi 2010, MathCad 14.

Смотрите, если есть вопросы - обращайтесь. ;)

Это сообщение отредактировал(а) Keeper89 - 5.7.2010, 21:35

Присоединённый файл ( Кол-во скачиваний: 76 )
Присоединённый файл  Delphi_MathCad.zip 410,52 Kb


--------------------
PM MAIL WWW   Вверх
Begemot911
Дата 28.11.2013, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.11.2013

Репутация: нет
Всего: нет



Цитата(Keeper89 @ 5.7.2010,  21:02)


Delphi 2010, MathCad 14.

Смотрите, если есть вопросы - обращайтесь. ;)

Огромное спасибо за выложенный пример! я столько времени потратил на его поиск, вы просто космос!

от себя добавлю, что при компиляции проекта выдало ошибку на Mathcad_TLB в Uses,
делаем вот что: 
Создаём модуль с описанием интерфейсов для работы с объектами Mathcad. Для этого нужно импортировать эти описания из библиотеки типов (automation.dll) и сохранить в виде .pas файла. Заходим в главное меню Project/Import Type Library... Откроется диалоговое окно. Ищем в нём строку Mathcad Automation 1.0 Type Library (Version 1.0). Если не находим, то жмём кнопку Add... и указываем файл automation.dll явно. Он находится в папке, там же где mathcad.exe. После этого появится нужная запись в окошке выбора. Жмём кнопку Create Unit. Сформируется файл с описанием интерфейсов на языке OPascal в вариации Delphi. Этот файл нужно сохранить в папке с будущим проектом. Имя файла можно оставить по умолчанию (Mathcad_TLB.pas).

Это сообщение отредактировал(а) Begemot911 - 29.11.2013, 11:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1328 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.