Delphi->c++

  • Автор темы tatar
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

tatar

Гость
#1
[codebox]unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RxGrdCpt, RxNotify, PageMngr, ExtCtrls, SpeedBar, OleServer,
AccessXP, StdCtrls, ToolWin, ActnMan, ActnCtrls, Spin;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;
Image1: TImage;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a:array [0..10000] of real;
c:array [0..10000] of smallint;
vv,Fd,NN:longint;
implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
vv:=0;FD:=1000; NN:=1000;
SpinEdit1.Value:=Fd;
SpinEdit2.Value:=NN;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
W5,H5,x,y:integer;
i,e:longint;
tt:string;
kx,ky,max, min:real;
begin
W5:=Image1.Width-20;kx:=(W5-25)/NN;
for e:=0 to nn do a[e]:=random(3)+70+100*sin(e/100+vv/10);вот этот синус неопознается
{asm
pusha
//*************LTP initialization***************
mov dx,37ah
in al,dx
or al,20h
out dx,al
//*************Выборочный запрет прерывания ****
mov al,11111101b
out $021,al
mov al,00000001b
out $0a1,al
//*************Задание границ памяти для ввода данных*
mov edi,offset c[0]
mov ecx,NN
add ecx,02
//************* Проверка готовности АЦП ***************
@1: mov dx,379h
@2: in al,dx
test al,80h
Jz @2
@3: in al,dx
test al,80h
Jz @3
//************Ввод данных с АЦП ***********************
mov dx,378h
in ax,dx
shr ah,5
xor ah,02h
test ah,02h
Jz @4
and ah,01h
neg ax
@4: mov word ptr ds:[edi],ax
inc edi
inc edi
loop @1
//************Срятие запрета всех прерываний***********
mov al,00000000b
out $021,al
out $0a1,al//sti
popa }
//end;
for i:=0 to NN do a[e]:=(c);
max:=1e-10; min:=1e10;
for i:=0 to NN do begin
if max<(a) then max:=a;
if min>(a) then min:=a;
end;
H5:=Image1.Height;
if max>min then ky:=(H5-40)/(max-min) else ky:=1;
with Image1.Canvas do begin
Brush.Color:=clwhite;
Pen.Width:=2;
FillRect(ClipRect);
Pen.Color:=clRed;
moveto(35,round(h5-30-(a[0]-min)*ky));
end;
for i:=1 to NN do begin
with Image1.Canvas do begin
x:=35+round(i*kx);
y:=round(h5-30-(a-min)*ky);
LineTo(x,y);
end;end;
//************Text******************
with Image1.Canvas do begin
Pen.color:=cllime;
//************horizontal************
MoveTo(35,H5-25);Lineto(W5+10,H5-25);
TextOut(W5 div 2,H5-12,'Time,s');
For i:=0 to 10 do begin
x:=35+round(i*(W5-25)/10);
Moveto(x,H5-25);LineTo(x,H5-30);
str((NN/Fd*i/10):4:2,tt);
TextOut(x-10,H5-22,tt);end;
//**********Vertical**************
MoveTo(35,0);lineto(35,H5-25);
For i:=0 to 10 do begin
y:=h5-30-round(i*(H5-40)/10);
Moveto(35,y);LineTo(38,y);
str(((max-min)/10*i+min):4:1,tt);
TextOut(0,y-5,tt);
end;end;
if vv<100000 then inc(vv) else vv:=0; Str(VV:4,tt);
Label1.Caption:=TT+' Cycle';
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if SpinEdit1.Text<>'' then
SpinEdit1.Value else Fd:=1000;
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
if SpinEdit2.Text<>'' then
NN:=SpinEdit2.Value else NN:=1000;
end;end.[/codebox]


мой перевод на C++ все отображает кроме графика если убрать
функцию синуса
поиогите кто чем может
 
A

Alliance

Гость
#3
Если в C++ не опознается sin(), то я вижу только 2 возможные проблемы:
1. ошибка в написании этого самого синуса, так как C++ требователен к регистру
2. не подключен математический модуль (#include <math.h>)
 
Статус
Закрыто для дальнейших ответов.