Как перевести код Delphi в .NET?

Задача такова, есть код на делфи, расчет определенных параметров и отображение зависимости, графика, в Delphi, нужно переписать это на WinForms или WPF.

Может кто-то знает средства или сервисы для этого?

Часть кода:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Chart1: TChart;
    Series1: TLineSeries;
    Series2: TLineSeries;
    Series3: TLineSeries;
    Series4: TLineSeries;
    PogrechnostEdit: TEdit;
    Label1: TLabel;
    ApogrEdit: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    WpogrEdit: TEdit;
    VpogrEdit: TEdit;
    Label4: TLabel;
    FoEdit: TEdit;
    Label5: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A,Fwsp,Fwo,Fp,d,Amax:extended;
  V,N,W,M,R,R1,Rb,Rmax,R2:integer;
  Wsp,Wo:array[0..100]of extended;
  Wp0,Wp10,Wp1,Wp11,Wp2,Wp12,Wp3,Wp13,Wpb,Wpmax,Wpmin,Wp:array[0..1000]of extended;
  minimumi,tochki,tochki1,tochki2,tochki3,tochkimin,tochkimax:TextFile;
implementation

{$R *.DFM}
 Procedure FrequencyWSP;
 var i:integer;

 begin

   V:=1;
   Fwsp:=A/V;
   N:=0; i:=0;
   While Fwsp>=0.02499999999999 do
         begin
          if Fwsp<=0.035000000001 then begin
                           Wsp[i]:=Fwsp;
                           i:=i+1;
                           N:=N+1;
                           end;

          V:=V+1;
          Fwsp:=A/V;

         end;

 end;
 Procedure FrequencyWO;
 var i:integer;
 begin

   W:=1;
   Fwo:=A/W;
   i:=0;
   M:=0;
   While Fwo>=0.02999999999 do begin
          Wo[i]:=Fwo;
          i:=i+1;
          M:=M+1;
          W:=W+1;
          Fwo:=A/W;
                   end;
 end;
 Procedure FrequencyP;
 var i,j,k:integer;
 begin
 k:=0;
 R:=0;
 for i:=0 to (M-1)do begin
       for j:=0 to (N-1)do begin
              Fp:=Wo[i]+Wsp[j];
              if Fp>=0.06999999999 then
                             begin
                   Wp[k]:=Fp;
                   k:=k+1;
                   R:=R+1;
                               end;
              Fp:=Wo[i]-Wsp[j];
              if Fp>=0.06999999999 then
                             begin
                   Wp[k]:=Fp;
                   k:=k+1;
                   R:=R+1;
                               end;
                           end;
                     end;
 end;
 Procedure OdEl; 
 var i,j:integer;
     de:extended;
 begin
    for i:=0 to R-1 do begin
         if Wp[i]>0 then begin
            for j:=i+1 to R-1 do begin
                if Wp[i]=Wp[j]  then Wp[j]:=0;
                de:=Wp[i]-Wp[j];
                if de<0 then de:=-de;
                if de<0.000000001 then Wp[j]:=0;
                                 end;
                         end;
                       end;
   R1:=0;
   j:=0;
   for i:=0 to R-1 do begin
       if Wp[i]>0 then begin
              Wp1[j]:=Wp[i];
              j:=j+1;
              R1:=R1+1;
                       end;
                      end;
 end;
 procedure inclear;
 var i,j:integer;
     p,p1:extended;
 begin
        Wpb[0]:=Wp1[0];
        for i:=1 to R1-1 do begin
              if Wp1[i]<Wpb[0] then Wpb[0]:=Wp1[i];
                           end;
    for i:=1 to R1-1 do begin 
        p1:=1;
        for j:=0 to R1-1 do begin
            p:=Wp1[j]-Wpb[i-1];
            if p>0 then begin
                if p<p1 then begin
                   p1:=p;
                   Wpb[i]:=Wp1[j];
                             end;
                        end;
                           end;
                       end;
     Rb:=R1;
 end;

 Procedure inclear1;
 var j,i:integer;
     p,p1: extended;
 begin
   Wp2[0]:=Wp1[0];
        for i:=1 to R1-1 do begin
              if Wp1[i]<Wp2[0] then Wp2[0]:=Wp1[i]; 
                           end;
    for i:=1 to R1-1 do begin
        p1:=1;
        for j:=0 to R1-1 do begin
            p:=Wp1[j]-Wp2[i-1];
            if p>0 then begin
                if p<p1 then begin
                   p1:=p;
                   Wp2[i]:=Wp1[j];
                             end;
                        end;
                           end;
                       end;
     R2:=R1;
 end;

 Procedure MAXMIN;
 var i,j:integer;
     dl,dl1,dp:extended;
 begin
      for i:=0 to Rb-1 do begin
              dl:=1;
              for j:=0 to R1-1 do begin
                   dl1:=Wpb[i]-Wp1[j];
                   if dl1<0 then
                             dl1:=-dl1;
                   if dl1<dl then begin
                             dl:=dl1;
                             dp:=Wp1[j];
                                  end;
                                  end;
             if dl>=0.000000001 then begin
                       if dp<Wpb[i] then begin
                            if Wpmin[i]<>0 then if Wpmin[i]>dp then Wpmin[i]:=dp;
                            if Wpmin[i]=0 then Wpmin[i]:=dp;
                                         end;
                       if dp>Wpb[i] then begin
                            if Wpmax[i]<>0 then if Wpmax[i]<dp then Wpmax[i]:=dp;
                            if Wpmax[i]=0 then Wpmax[i]:=dp;
                                         end;
                                     end;
             if dl<0.000000001 then begin
                      if Wpmin[i]<>0 then if Wpmin[i]>dp then Wpmin[i]:=dp;
                      if Wpmin[i]=0 then Wpmin[i]:=dp;
                                    end;
                          end;
   {for i:=0 to R1-1 do begin
       if Wp1[i]<Wpb[0]then begin
            if Wpmin[0]>0 then begin
                 if Wp1[i]<Wpmin[0]then Wpmin[0]:=Wp1[i];
                               end;
            if Wpmin[0]=0 then Wpmin[0]:=Wp1[i];
                            end;
       if Wp1[i]>Wpb[Rb-1]then begin
            if Wpmax[Rb-1]>0 then begin
                 if Wp1[i]>Wpmax[Rb-1]then Wpmax[Rb-1]:=Wp1[i];
                                  end;
            if Wpmax[Rb-1]=0 then Wpmax[Rb-1]:=Wp1[i];
                               end;
       for j:=0 to Rb-2 do begin
            if Wp1[i]>Wpb[j]then if Wp1[i]<Wpb[j+1]then begin
                dl:=Wp1[i]-Wpb[j];
                dp:=Wpb[j+1]-Wp1[i];
                if dl<dp then begin
                   if Wpmax[j]>0 then begin
                       if Wp1[i]>Wpmax[j]then Wpmax[j]:=Wp1[i];
                                      end;
                   if Wpmax[j]=0 then Wpmax[j]:=Wp1[i];
                              end;
                if dl>dp then begin
                   if Wpmin[j+1]>0 then begin
                       if Wp1[i]<Wpmin[j+1]then Wpmin[j+1]:=Wp1[i];
                                        end;
                   if Wpmin[j+1]=0 then Wpmin[j+1]:=Wp1[i];
                              end;
                if dl=dp then begin
                   if Wpmax[j]>0 then begin
                       if Wp1[i]>Wpmax[j]then Wpmax[j]:=Wp1[i];
                                      end;
                   if Wpmax[j]=0 then Wpmax[j]:=Wp1[i];
                              end;
                                                        end;
                           end;
                       end; }
 end;
 Procedure MAXMIN1;
 var i:integer;
 begin
   for i:=0 to Rb-1 do begin
         if Wpmax[i]=0 then Wpmax[i]:=Wpb[i];
         if Wpmin[i]=0 then Wpmin[i]:=Wpb[i];
                       end;
 end;
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 4
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
головой + руками
Ответ написан
Делфи NET или Win32?

Скомпилировать в NET и декомпилировать в проект C#, может такой вариант прокатит.
.NET Reflector
dotPeek
Код ерундовый, ручками за 3 часа можно все перевести.

Delphi рулит :)
Ответ написан
@kalapanga
Код здесь действительно простейший. Но проблема в компоненте TeeChart, который собственно и выполняет всю работу по отрисовке графики. Сходите к ним на сайт, вроде существует версия и под .NET (возможно платная). Если есть, то берёте её и, думаю, проблем с переходом у Вас не будет.
Ответ написан
@AlexSku
не буду отвечать из-за модератора
Можете писать на Delphi для .Net: раньше это была Delphi 8, потом Delphi XE Prism.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы