Delphi->c++

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем tatar, 9 янв 2007.

Статус темы:
Закрыта.
  1. tatar

    tatar Гость

    [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++ все отображает кроме графика если убрать
    функцию синуса
    поиогите кто чем может
     
  2. ????

    ???? Гость

    uses Math ????
     
  3. Alliance

    Alliance Гость

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

Поделиться этой страницей