Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi и MathCad 
:(
    Опции темы
Homer
Дата 10.8.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



   Можно ли в Delphi как-нибудь использовать возможности Маткада, например, вывод графиков по формулам или хотя бы расчет интегралов и т.п.?
   Собственно мне необходимо по исходным данным построить ряд графиков по определенным функциям, причем в большинстве своем эти функции довольно-таки сложные с интегралами, с комплексными числами. Один график вообще в полярной системе координат smile 
   В delphi я новичек, но мне кажется, что в силу его популярности, должны быть разработаны какие-нить компоненты математические. Если кто сталкивался с такой проблемой, то пжл помогите советом или подскажите полезные ссылочки.
   Заранее благодарен.

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Не думаю, что с маткадом можно подружиться.
Лучше копать в сторону решения твоих интегралов и т.д средствами дельфи.
Полярная система далеко не страшна, а с комплексными числами дельфи легко справится.
PM MAIL   Вверх
jack128
Дата 10.8.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а почему бы не использовать собственно MathCad ??
PM MAIL   Вверх
Snowy
Дата 10.8.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(jack128 @  10.8.2006,  22:54 Найти цитируемый пост)
а почему бы не использовать собственно MathCad ??
Встречный вопрос "А как?". Есть примеры?
PM MAIL   Вверх
Alexeis
Дата 10.8.2006, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Ну это зависит от производителей MatCad, если они предусмотрели межпрограмный обмен, OLE, DDE - то возможно, а если нет то трудновато будет реализовать обмен.

Это сообщение отредактировал(а) alexeis1 - 10.8.2006, 23:56


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alex
Дата 11.8.2006, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Цитата(Snowy @  11.8.2006,  00:25 Найти цитируемый пост)
Встречный вопрос "А как?". Есть примеры? 

Хотя бы как ole объект, он не запрещает себя так использовать smile 


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Snowy
Дата 11.8.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(Alex @  11.8.2006,  00:04 Найти цитируемый пост)
Хотя бы как ole объект, он не запрещает себя так использовать
smile Тогда покажите мне пальцем человека, который бы хотя бы сказал, что у него хоть что-то получилось smile
Мне даже примера не надо. Просто скажите - хоть у кого-нить получалось?
PM MAIL   Вверх
Alexeis
Дата 11.8.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Snowy @  11.8.2006,  00:31 Найти цитируемый пост)
Мне даже примера не надо. Просто скажите - хоть у кого-нить получалось? 

Код

unit Unit1;
{MathCad Automation Controller
OLE Automation Controller example for MathCad
Requires:
      MathCad 7.02 or later.
      Two MathCad doc's named TEST1.MCS and Test2.MCD,
          with out0 out1 and out2 vars computed from in0 in1 in2.
          All of them are complex numbers.

Instructions:
      1.- Uses Unit OLE2, where OLE constants such as VT_Dispatch=9 are defined.
          Also uses other OLE units (see Uses clause):

      2.- Define variables of Variant type in the VAR section
          VAR MCadObject,
          in0Re, in0Im, outRe0, outIm0,
          in1Re, in1Im, outRe1, outIm1,
          in2Re, in2Im, outRe2, outIm2 : Variant;

      3.- MathCad object can be inserted in the OLE container interactively
          or by program by sending the TOleContainer message :
          CreateObjectFromFile(const FileName: string; Iconic: Boolean) with
          FileName = FullPathName of MathCad file and
          Iconic = False, to display the file contents and not the icon.
          oleContainer1.CreateObjectFromFile('c:\TestDir\Test1.mcd',False);

      4.- The MathCad object can be interactively activated by Double Clicking
          on it or by program by setting to aaManual the TOleContainer property
          AutoActivate oleContainer1.AutoActivate = aaManual and executing the
          verb oleContainer1.DoVerb(ovShow) to display the object.
          Another way of doing this is by executing
          oleContainer1.DoVerb(ovPrimary)

      5.- Asign the object in OleContainer to a Variant type var;
          MCadObject := OleContainer1.OleObject;

      6.- Check that the object returned is of VT_DISPATCH type (9)
          If VarType(McadObject) = VT_DISPATCH then
             label1.Caption := 'OK: Type returned VT_DISPATCH'
          Else
             Label1.Caption :=  'Error: Type returned ' +
                            IntToStr(VarType(MCadObject));

      7.- Set the values of input vars and send the messages to pass input vars,
          recalculate the doc and retrieve the out vars.
          SetComplex( varName, realPart, imagPart)
          Recalculate
          GetComplex( varName, realPart, imagPart)
          to MCad object.
          Display the values of the output vars.
         }

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   OleCtnrs, StdCtrls, ComCtrls, comobj, OleCtrls, OLE2;

type
  TMCadAutomationController = class(TForm)
    OleContainer1       : TOleContainer;
    InsertDoc1          : TButton;
    InsertDoc2          : TButton;
    CalculateDoc        : TButton;
    Re                  : TLabel;
    Im                  : TLabel;
    Edit1               : TEdit;
    Edit2               : TEdit;
    Edit3               : TEdit;
    Edit4               : TEdit;
    Edit5               : TEdit;
    Edit6               : TEdit;
    Edit7               : TEdit;
    Edit8               : TEdit;
    Edit9               : TEdit;
    Edit10              : TEdit;
    Edit11              : TEdit;
    Edit12              : TEdit;
    Label1              : TLabel;
    Label2              : TLabel;
    Label3              : TLabel;
    Label4              : TLabel;
    Label5              : TLabel;
    Label6              : TLabel;
    Label7              : TLabel;
    Label8              : TLabel;
    Label9              : TLabel;

    procedure CalculateDocClick(Sender: TObject);
    procedure InsertDoc1Click(Sender: TObject);
    procedure InsertDoc2Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }

  end;

var
  MCadAutomationController                         : TMCadAutomationController;
  MCadObject                                       : Variant;
  in0Re, in0Im, in1Re, in1Im, in2Re, in2Im         : Variant;
  outRe0, outIm0, outRe1, outIm1, outRe2, outIm2   : Variant;

implementation

{$R *.DFM}

procedure TMCadAutomationController.CalculateDocClick(Sender: TObject);
begin
     {Set the real and imaginary parts of in0, in1 and in2 vars}
     in0Re := StrToFloat (Edit1.text);
     in0Im := StrToFloat (Edit4.text);
     in1Re := StrToFloat (Edit2.text);
     in1Im := StrToFloat (Edit5.text);
     in2Re := StrToFloat (Edit3.text);
     in2Im := StrToFloat (Edit6.text);
     {Pass the values of input vars to MCad object}
     MCadObject.SetComplex('in0',in0Re,in0Im);
     MCadObject.SetComplex('in1',in1Re,in1Im);
     MCadObject.SetComplex('in2',in2Re,in2Im);
     {Recalculate the MCad doc}
     MCadObject.Recalculate;
     {Retrieve the values calculated of output vars out0, put1 and out2}
     MCadObject.GetComplex('out0',outRe0,outIm0);
     MCadObject.GetComplex('out1',outRe1,outIm1);
     MCadObject.GetComplex('out2',outRe2,outIm2);
     {Display the values of output vars}
     Edit7.text    := FloatToStr(outRe0);
     Edit10.text   := FloatToStr(outIm0);
     Edit8.text    := FloatToStr(outRe1);
     Edit11.text   := FloatToStr(outIm1);
     Edit9.text    := FloatToStr(outRe2);
     Edit12.text   := FloatToStr(outIm2);
end;

procedure TMCadAutomationController.InsertDoc1Click(Sender: TObject);
begin
     Label9.Caption := 'Wait: Inserting Doc';
     oleContainer1.CreateObjectFromFile('i:Test1.mcd',False);
     oleContainer1.AutoActivate := aaManual;
     oleContainer1.DoVerb(ovShow);
     MCadObject := OleContainer1.OleObject;
     If VarType(McadObject) = VT_DISPATCH then
       {OK. Object returned is of IDispatch or dispinterface type}
       Label9.Caption := 'OK: Type returned VT_DISPATCH'
     Else
       {Error. Failure to connect to OLE Automation Server}
       Label9.Caption :=  'Error: Type returned '
                      + IntToStr (VarType (MCadObject));
end;

procedure TMCadAutomationController.InsertDoc2Click(Sender: TObject);
begin
     Label9.Caption := 'Wait: Inserting Doc';
     oleContainer1.CreateObjectFromFile('i:Test2.mcd',False);
     oleContainer1.AutoActivate := aaManual;
     oleContainer1.DoVerb(ovShow);
     MCadObject := OleContainer1.OleObject;
     If VarType(McadObject) = VT_DISPATCH then
       {OK. Object returned is of IDispatch or dispinterface type}
       Label9.Caption := 'OK: Type returned VT_DISPATCH'
     Else
       {Error. Failure to connect to OLE Automation Server}
       Label9.Caption :=  'Error: Type returned '
                      + IntToStr (VarType (MCadObject));
end;

end.



Взято отсюда
http://delphi.about.com/gi/dynamic/offsite...FAutomation.htm

Это сообщение отредактировал(а) alexeis1 - 11.8.2006, 00:49


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alex
Дата 11.8.2006, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Цитата(Snowy @  11.8.2006,  01:31 Найти цитируемый пост)
smile Тогда покажите мне пальцем человека, который бы хотя бы сказал, что у него хоть что-то получилось smile
Мне даже примера не надо. Просто скажите - хоть у кого-нить получалось? 

Как говорится, а хоть кто нибудь пытался? smile 


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
jack128
Дата 11.8.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Snowy @  10.8.2006,  23:25 Найти цитируемый пост)
Встречный вопрос "А как?". Есть примеры?

ты не понял.  Я вообще не говорю о написании программы на дельфи.  Если мне нужно будет посчитать интеграл - я не буду для этого дельфи использовать вообще, я запущу MathCAD и посчитаю интерграл. Дельфи для этой задачи вообще не нужен.
PM MAIL   Вверх
drkot
Дата 11.8.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Цитата(jack128 @  11.8.2006,  10:41 Найти цитируемый пост)
я запущу MathCAD и посчитаю интерграл

это чтоб злазами посмотреть и в блокнотик записать, а для маломальской автоматизации или передачи данных, нестандартных методов и прочей надобности маткад идет лесом тут как раз программка и пригодилась


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Alexeis
Дата 11.8.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(drkot @  11.8.2006,  11:16 Найти цитируемый пост)
 для маломальской автоматизации или передачи данных, нестандартных методов и прочей надобности маткад идет лесом тут как раз программка и пригодилась

тем боле что если хорошо порыскать, то можно фортрановские библы к делфям прикрутить, тогда уж вообще скорость даже лучше чем у MathCad




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
jack128
Дата 11.8.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(drkot @  11.8.2006,  11:16 Найти цитируемый пост)
а для маломальской автоматизации или передачи данных, нестандартных методов и прочей надобности маткад идет лесом тут как раз программка и пригодилась 


Читаем что нужно человеку:

Цитата(Homer @  10.8.2006,  19:55 Найти цитируемый пост)
 Собственно мне необходимо по исходным данным построить ряд графиков по определенным функциям, причем в большинстве своем эти функции довольно-таки сложные с интегралами, с комплексными числами. Один график вообще в полярной системе координат  


С какой из задач не справится MathCAD ?

Цитата(alexeis1 @  11.8.2006,  11:36 Найти цитируемый пост)
тем боле что если хорошо порыскать,

вот-вот.  Именно это мне и не понятно.  Зачем рыскать, зачем искать, зачем изучать если всё уже есть.  Запусти и решай свои интегралы, рисуй свои графики и не парься. Я конечно понимаю. что изобретение своего велосипеда - это архиважная и полезная задача, но обычно требуется дело делать, а не херней страдать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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