📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "calc_flex.c"
#include "calc_yacc.c"
#include "ucvm_type.c"
#include "ucvm9.cpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
FILE *asout = NULL;
//---------------------------------------------------------------------------
void *func_exp(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = exp(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_log(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = log(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_sin(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = sin(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_cos(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = cos(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_tan(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = tan(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_asin(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = asin(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_acos(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = acos(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_atan(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = atan(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_sinh(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = sinh(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_cosh(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = cosh(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
void *func_tanh(long parame_count, T_DAT *parame_stack)
{
REAL v_parame;
REAL *p_result;
if(parame_stack->dat_type == UCVM9_TYPE_FLT)
v_parame = *(REAL *)(parame_stack->dat_addr);
else
if(parame_stack->dat_type == UCVM9_TYPE_INT)
v_parame = *(long *)(parame_stack->dat_addr);
else
v_parame = *(char *)(parame_stack->dat_addr);
p_result = (REAL *)(new char[sizeof(REAL)]);
*p_result = tanh(v_parame);
return(p_result);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
my_ucvm9 = new TUCVM9;
my_ucvm9->reg_fun("exp", UCVM9_TYPE_FLT, func_exp);
my_ucvm9->reg_fun("log", UCVM9_TYPE_FLT, func_log);
my_ucvm9->reg_fun("sin", UCVM9_TYPE_FLT, func_sin);
my_ucvm9->reg_fun("cos", UCVM9_TYPE_FLT, func_cos);
my_ucvm9->reg_fun("tan", UCVM9_TYPE_FLT, func_tan);
my_ucvm9->reg_fun("asin", UCVM9_TYPE_FLT, func_asin);
my_ucvm9->reg_fun("acos", UCVM9_TYPE_FLT, func_acos);
my_ucvm9->reg_fun("atan", UCVM9_TYPE_FLT, func_acos);
my_ucvm9->reg_fun("sinh", UCVM9_TYPE_FLT, func_sinh);
my_ucvm9->reg_fun("cosh", UCVM9_TYPE_FLT, func_cosh);
my_ucvm9->reg_fun("tanh", UCVM9_TYPE_FLT, func_tanh);
my_bmp_a = new Graphics::TBitmap;
my_bmp_b = new Graphics::TBitmap;
my_bmp_a->PixelFormat = pf16bit;
my_bmp_a->Width = this->Image1->Width;
my_bmp_a->Height = this->Image1->Height;
this->Image1->Picture->Graphic = my_bmp_a;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete this->my_ucvm9;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//clean;
if(this->Image1->Tag == 0)
Button2Click(Sender);
int w = this->Image1->Width;
int h = this->Image1->Height;
//绘制轴线;
if(this->CheckBox1->Checked)
{
this->Image1->Canvas->Pen->Color = this->Shape3->Brush->Color;
this->Image1->Canvas->MoveTo(10, h / 2);
this->Image1->Canvas->LineTo(w - 10, h / 2);
this->Image1->Canvas->LineTo(w - 20, h / 2 - 2);
this->Image1->Canvas->MoveTo(w - 10, h / 2);
this->Image1->Canvas->LineTo(w - 20, h / 2 + 2);
this->Image1->Canvas->MoveTo(w / 2, h - 10);
this->Image1->Canvas->LineTo(w / 2, 10);
this->Image1->Canvas->LineTo(w / 2 + 2, 20);
this->Image1->Canvas->MoveTo(w / 2, 10);
this->Image1->Canvas->LineTo(w / 2 - 2, 20);
}
//提取参数;
double xv_min;
double xv_stp;
double xv_max;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -