Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
9 / 9 / 0
Регистрация: 22.12.2017
Сообщений: 295
.NET 6

Перевод кода из Delphi на C#

10.05.2022, 14:19. Показов 1626. Ответов 11

Студворк — интернет-сервис помощи студентам
Всем привет, перевожу программу построения спектра волны с DELPHi на C#, вроде все сделал верно, но ожидаемый результат не получаю. Помогите найти косяк.
PS Реинжинирингом пока не занимаюсь, хочу для начала добиться хотя бы работоспособности
Код на Delphi:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
unit Model;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Math, ExtCtrls, TeEngine, Series, TeeProcs,
  Chart, Menus, jpeg;
 
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Chart2: TChart;
    FastLineSeries1: TFastLineSeries;
    LineSeries1: TLineSeries;
    Label2: TLabel;
    PopupMenu1: TPopupMenu;
    N4: TMenuItem;
    N5: TMenuItem;
    Label4: TLabel;
    FastLineSeries2: TBarSeries;
    TabSheet4: TTabSheet;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Edit2: TEdit;
    Label15: TLabel;
    Label16: TLabel;
    Edit3: TEdit;
    Label17: TLabel;
    Edit4: TEdit;
    Edit1: TEdit;
    Label1: TLabel;
    Button2: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
const
  Pi2=Pi*2;
 
var
  Form1: TForm1;
  A1, A2 : Double;
  Num1, Num2 : integer;
  Fx, BmR, Tr : single;
  c : int64;
 
  YDPFa             : array [1..15000000] of Double;
 
  F: text;
  ADF               : array [0..255] of Char;
 
implementation
 
{$R *.dfm}
 
Function DPF(Nf, NN :integer; OMGDPF :Single): Single;
var x1, y1, y2, Mi : Single;
Alpha, k, Ni, Li : integer;
T: Double;
begin
 A1:=0;
 A2:=0;
 T:=1/44000;
 y1:=Pi2/(NN*T);   { Минимальная частота ДПФ }
 y2:=Pi/T;         { Максимальная частота ДПФ }
 { y1>1 период текущей частоты OMGDPF меньше периода оценивания }
  if (NN=0) or (y2<OMGDPF) or (y1=OMGDPF) then
   begin
    DPF:=0;
    Li:=0;
    Mi:=0;
    A1:=0;
    A2:=0;
   end    else
  if OMGDPF<y1 then
   begin
    Li:=0;
    Mi:=NN;
    For k:=1 to NN do A1:=A1+YDPFa[k];
    A1:=A1/NN;
    DPF:=ABS(A1);
    A2:=0;
   end        else
   begin
    Mi:=Pi2/(T*OMGDPF);          { Число тактов в периоде текущей частоты }
    Li:=Trunc(NN/Mi);            { Число целых периодов текущей частоты в NN измерений }
    Ni:=Trunc(Li*Mi);            { Число тактов ДПФ }
    Alpha:=(NN-Ni) Div 2;
    If Mi>=2 then
     begin
      For k:=1+Alpha to Ni+Alpha do
       begin
        x1:=OMGDPF*T*(k-1-Alpha);
        A1:=A1+YDPFa[k]*cos(x1);
        A2:=A2+YDPFa[k]*sin(x1);
       end;
      if Ni>0 then
       begin
        A1:=A1*2/Ni;
        A2:=A2*2/Ni;
       end;
      DPF:=Sqrt(SQR(A1)+SQR(A2));
     end     else
     begin
      DPF:=0;
      Li:=NN;
      A1:=0;
      A2:=0;
     end;
   end;
end;
 
 
procedure Spectr(NN, SCC, Nf:integer);
var x1,OmgM,Yv,Times : Single;
n : integer;
begin
    {  Вывод спектра на график }
     Fx:=BmR/NN;
     x1:=BmR;
     TR:=(x1-Fx)/Num1;
   { Главный цикл }
    Num2:=0;
    For n:=0 to Num1 do
     begin
      OmgM:=Fx+TR*n;
    { Вычисление текущего значения cпектра }
      Yv :=DPF(Nf, NN, OmgM);
    { Вывод результатлов на дисплей }
      Times:=OmgM/Pi2;
      form1.Chart2.series[SCC].addXY(Times,Yv);
      Num2:=Num2+1;
      if n mod 100=0 then
       begin
        form1.Label2.Caption:=form1.Label2.Caption+'.';
        form1.Refresh;
       end;
     end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var ttt,Line:ShortString;
i,j,k,m,n:integer;
x:single;
begin
 if  form1.OpenDialog1.Execute then
  begin
   ttt:=form1.OpenDialog1.FileName;
   form1.edit2.Text:=ttt;
   AssignFile(F,ttt);
    {$I-}
    Reset(F);
    {$I+}
    if IoResult<>0 then
     begin
      StrPCopy(ADF, 'Файл с именем '+form1.OpenDialog1.FileName+' открыть невозможно!!!');
      Application.MessageBox(ADF,'Ошибка чтения файла',0);
      exit;
     end;
    j:=0;
    n:=0;
    while not Eof(F) do
    begin
     j:=j+1;
     Readln(F, Line);
     for k:=1 to ORD(Line[0]) do if Line[k]=',' then Line[k]:='.';
     val(Line,x,m);
     if m<>0 then
      begin
       x:=0;
       n:=n+1;
      end;
     YDPFa[j]:=x;
    end;
   CloseFile(F);
   form1.edit3.Text:=IntToStr(j);
   form1.edit4.Text:=IntToStr(n);
   if j<10 then exit;
   form1.Label2.Caption:='';
   form1.Chart2.Title.Text.Clear;
   for i:=0 to 2 do
    begin
     { Очистка графиков, отключение легенд }
     form1.Chart2.Series[i].Clear;
     form1.Chart2.Series[i].ShowInLegend:=false;
    end;
   BmR:=22000*Pi2;         { Максимальная частота ДПФ }
   Num1:=5000;
   Spectr(j,0,1);      { Измерений, № графика, № исх. данн., № колонки. Вых. данн. 3 и 4 }
  end;
end;
 
end.
Код на C#
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Udar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        const double Pi2 = Math.PI * 2;
 
        double A1, A2;
        int Num1, Num2;
        double Fx, BmR, Tr;
 
        List<double> YDPFa = new List<double>();
 
        List<char> ADF = new List<char>();
 
        public double DPF(int NF, int NN, double OMGDPF)
        {
            double resultDPF;
            double x1, y1, y2, Mi, T;
            int Alpha, Ni, Li;
            resultDPF = 0;
            A1 = 0;
            A2 = 0;
            T = 1 / 44000;
            y1 = Pi2 / (NN * T); /* Минимальная частота ДПФ */
            y2 = Math.PI / T; /* Максимальная частота ДПФ */
            /* y1 > 1 период текущей частоты OMGDPF меньше периода оценивания */
            if ((NN == 0) | (y2 < OMGDPF) | (y1 == OMGDPF))
            {
            Li = 0;
            Mi = 0;
            A1 = 0;
            A2 = 0;
            }
            else if (OMGDPF < y1)
            {
            Li = 0;
            Mi = NN;
 
            for (int k = 1; k<NN; k++)
            {
                A1 = A1 + YDPFa[k];
            }
            A1 = A1 / NN;
            resultDPF = Math.Abs(A1);
            A2 = 0;
            }
            else
            {
                Mi = Pi2 / (T * OMGDPF); //Число тактов в периоде текущей частоты
                Li = (int)Math.Truncate(NN/Mi); //Число целых периодов текущей частоты в NN измерений
                Ni = (int)Math.Truncate(Li * Mi); //Число тактов ДПФ
                Alpha = (NN - Ni) % 2;
                if (Mi>=2)
                {
                    for (int k=1+Alpha; k<Ni+Alpha; k++)
                    {
                    x1 = OMGDPF * T * (k - 1 - Alpha);
                    A1 = A1 + YDPFa[k] * Math.Cos(x1);
                    A2 = A2 + YDPFa[k] * Math.Sin(x1);
                    }
                    if (Ni > 0)
                    {
                    A1 = A1 * 2 / Ni;
                    A2 = A2 * 2 / Ni;
                        resultDPF = Math.Sqrt((A1 * A1) + (A2 * A2));
                    }
                    else
                    {
                        resultDPF = 0;
                        Li = NN;
                        A1 = 0;
                        A2 = 0;
                    }
                }
            }
            return resultDPF;
        }
 
        public void Spectr(int NN, int SCC, int Nf)
        {
            double x1, OmgM, Yv, Times;
            /* Вывод спектра на график */
            Fx = BmR / NN;
            x1 = BmR;
            Tr = (x1 - Fx) / Num1;
 
            /* Главный цикл */
            Num2 = 0;
            for (int n = 0; n<Num1; n++)
            {
                OmgM = Fx + Tr * n;
                //Вычисление текущего значения cпектра 
                Yv = DPF(Nf, NN, OmgM);
                //Вывод результатлов на дисплей
                Times = OmgM / Pi2;
                chart1.Series[SCC].Points.AddXY(Yv, Times);
                Num2 = Num2 + 1;
                if (n % 100 == 0)
                {
                    //form1.Label2.Caption:= form1.Label2.Caption + '.';
                }
            }
        }
 
        private void textBox1_Click(object sender, EventArgs e)
        {
            string FilePath = string.Empty;
 
            OpenFileDialog OPF = new OpenFileDialog();
            OPF.Filter = "Файлы txt|*.txt";
            if (OPF.ShowDialog() == DialogResult.OK)
            {
                FilePath = OPF.FileName;
                textBox1.Text = FilePath;
            }
 
            YDPFa = File.ReadAllLines(FilePath)
            .SelectMany(l => l.Split('\n').Select(double.Parse))
            .ToList();
 
            BmR = 22000 * Pi2; //Максимальная частота ДПФ
            Num1 = 5000;
            Spectr(YDPFa.Count, 0, 1); //Измерений, № графика, № исх.данн., № колонки.Вых.данн. 3 и 4
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2022, 14:19
Ответы с готовыми решениями:

Перевод кода из Delphi в C++
unit pr1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, RXClock,...

Перевод кода Delphi 7 в C#
Здравствуйте, нужна помощь в переводе кода с Delphi 7 на C# Исходный код на Delphi 7 procedure TForm1.Button1Click(Sender:...

Перевод кода из Delphi
Помогите перевести код из делфи в паскаль, написал прогу в делфи а в паскале не могу что то)) Заранее спасибо) var Form1: TForm1; ...

11
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
12.05.2022, 16:03
а что помешало привести весь код, а не только 2 функции (дпф и спектр)?
к тому же, если были ошибки - то, где они?
0
9 / 9 / 0
Регистрация: 22.12.2017
Сообщений: 295
12.05.2022, 18:36  [ТС]
untyped, переведено полностью. График строится не так как нужно
0
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
12.05.2022, 22:34
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
График строится не так как нужно
В Delphi индексы массивов начинаются с 1, в C# - с 0. Этот момент учтён?
0
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
15.05.2022, 15:36
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
переведено полностью.
что там у тебя переведено? ты откуда-то (вероятно, с универа на кафедре) - полурабочий пример скопипастил, а теперь вмолчанку играешь.
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
График строится не так как нужно
он у тебя вообще не должен строиться.
В твоём проекте на Delphi - половина мёртвого кода.

когда я просил привести все файлы и ошибки - ты проигнорировал. Если тебе не нужна помощь - то, и не было смысла писать тут.
в общем...
это твоя форма - как я понял - она должна была выглядеть:


а вот так Object Tree
всё стальное - пришлось выкинуть - т.к. оно у тебя НЕ задействовано:

Что касается кода на CSharp - то, тут ещё далеко до него.
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
PS Реинжинирингом пока не занимаюсь,
а это вообще о чём?
о каком реинжиниринге идёт речь?.... )
0
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
15.05.2022, 20:05
окончательный вариант:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
unit Model;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Math, ExtCtrls, TeEngine, Series, TeeProcs,
  Chart, Menus, jpeg;
 
type
  TForm1 = class(TForm)
    Chart2: TChart;
    progress_label: TLabel;
    OpenDialog1: TOpenDialog;
    Edit2: TEdit;
    Edit3: TEdit;
    num_errors_label: TLabel;
    Edit4: TEdit;
    Button1: TButton;
    filename_label: TLabel;
    num_samples_label: TLabel;
    GroupBox1: TGroupBox;
    procedure Button1Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
const
  g_Pi2=Pi*2;
 
var
  Form1: TForm1;
 
  YDPFa : array [1..15000000] of Double;      // про динамические массивы - не слышали, видимо
 
  g_F: text;   // file handle;
 
 
implementation
 
{$R *.dfm}
 
Function DPF(NN :integer; OMGDPF :Single): Single;
(*
  NN - количество семплов из файла
  
*)
 
var x1, y1, y2, Mi : Single;
Alpha, k, Ni, Li : integer;
A1, A2 : Double;
 
T: Double;
begin
  A1:=0;
  A2:=0;
  T:=1/44000;
  y1:=g_Pi2/(NN*T);   { Минимальная частота ДПФ }
  y2:=Pi/T;         { Максимальная частота ДПФ }
{ y1>1 период текущей частоты OMGDPF меньше периода оценивания }
  if (NN=0) or (y2<OMGDPF) or (y1=OMGDPF) then
    begin
      DPF:=0;
      Li:=0;
      Mi:=0;
      A1:=0;
      A2:=0;
    end
  else
    if OMGDPF<y1 then
      begin
        Li:=0;
        Mi:=NN;
        For k:=1 to NN do A1:=A1+YDPFa[k];
        A1:=A1/NN;
        result:= ABS(A1);
        A2:=0;
      end
    else
      begin
        Mi:=g_Pi2/(T*OMGDPF);          { Число тактов в периоде текущей частоты }
        Li:=Trunc(NN/Mi);            { число целых периодов текущей частоты в NN измерений }
        Ni:=Trunc(Li*Mi);            { Число тактов ДПФ }
        Alpha:=(NN-Ni) Div 2;
        if Mi>=2 then
          begin
            For k:=1+Alpha to Ni+Alpha do
              begin
                x1:=OMGDPF*T*(k-1-Alpha);
                A1:=A1+YDPFa[k]*cos(x1);
                A2:=A2+YDPFa[k]*sin(x1);
              end;
            if Ni>0 then
              begin
                A1:=A1*2/Ni;
                A2:=A2*2/Ni;
              end;
            result:=Sqrt(SQR(A1)+SQR(A2));
          end
        else
          begin
            result:=0;
            Li:=NN;
            A1:=0;
            A2:=0;
          end;
      end;
end;
 
 
procedure Spectr(NN, SCC:integer);
(*
  NN - количество семплов из файла
  SCC - номер канала чарта
*)
 
var x1,OmgM,Yv,Times : Single;
n, Num1 : integer;
Fx, Tr, BmR : single;
begin
  Num1:=5000;
  BmR:=22000*g_Pi2;  { Максимальная частота ДПФ }
    {  Вывод спектра на график }
  Fx:=BmR/NN;
  x1:=BmR;
  Tr:=(x1-Fx)/Num1;
    { Главный цикл }
 
  For n:=0 to Num1 do
    begin
      OmgM:=Fx+Tr*n;
      { Вычисление текущего значения cпектра }
      Yv :=DPF(NN, OmgM);
      { Вывод результатлов на дисплей }
      Times:=OmgM/g_Pi2;
      form1.Chart2.series[SCC].addXY(Times,Yv);
 
      if n mod 100=0 then
        begin
          form1.progress_label.Caption:=form1.progress_label.Caption+'.';
          form1.Refresh;
        end;
    end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
var ttt,Line:ShortString;
i,j,k,m,n:integer;
x:single;
ADF : array [0..255] of Char;  // messagebox string buffer
 
begin
  if  form1.OpenDialog1.Execute then
    begin
      ttt:=form1.OpenDialog1.FileName;
      form1.edit2.Text:=ttt;
      AssignFile(g_F,ttt);
      {$I-}
      Reset(g_F);
      {$I+}
      if IoResult<>0 then
        begin
          StrPCopy(ADF, 'Файл с именем '+form1.OpenDialog1.FileName+' открыть невозможно!!!');
          Application.MessageBox(ADF,'Ошибка чтения файла',0);
          exit;
        end;
      j:=0;
      n:=0;
      while not Eof(g_F) do
        begin
          j:=j+1;
          Readln(g_F, Line);
          for k:=1 to ORD(Line[0]) do if Line[k]=',' then Line[k]:='.';    // зпт на тчк
          val(Line,x,m);
          if m<>0 then        // on error
            begin
              x:=0;
              n:=n+1;
            end;
          YDPFa[j]:=x;    // семплы из файла
        end;
      CloseFile(g_F);
      form1.edit3.Text:=IntToStr(j);
      form1.edit4.Text:=IntToStr(n);
      if j<10 then exit;
      form1.progress_label.Caption:='';
      form1.Chart2.Title.Text.Clear;
      for i:=0 to Chart2.SeriesList.Count-1 do
        begin
          { Очистка графиков, отключение легенд }
          form1.Chart2.Series[i].Clear;
          form1.Chart2.Series[i].ShowInLegend:=false;
        end;
      Spectr(j,0);
    end;
end;
 
end.
0
9 / 9 / 0
Регистрация: 22.12.2017
Сообщений: 295
17.05.2022, 19:15  [ТС]
untyped, прошу прощения, раньше зайти не получилось. Файлы прикрепил. Про мертвый код я вкурсе, на делфях все работает, я не могу это правильно в C# перевести, дабы уже в нем дорабатывать.
Вложения
Тип файла: rar 1.rar (30.7 Кб, 4 просмотров)
0
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
17.05.2022, 21:22
видешь ли, твоя программа на Delphi и твой код на Сишарпе - это 2 большие разницы....
кроме того,
твой код на сишарпе - также содержит кучу не использованных переменных
неверные прототипы функций
а также - по какой-то причине - ты поменял местами на графике ось X и ось Y.
C#
1
chart1.Series[SCC].Points.AddXY(Yv, Times);
ты говоришь, что
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
я не могу это правильно в C# перевести, дабы уже в нем дорабатывать.
но, при этом - ты ведь уже перевёл свою программу на Дельфи в Сишарп, пусть и с ошибками. Что мешает постепенно в сишарпе - это всё дело допиливать?
0
9 / 9 / 0
Регистрация: 22.12.2017
Сообщений: 295
18.05.2022, 05:15  [ТС]
untyped, ключевое "пусть и с ошибками", именно это и мешает работать дальше. В идеале я надеялся DFT-библиотеку нормальную найти, чтобы обработка была если не моментальной, то хотя бы быстрой
0
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
18.05.2022, 07:53
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
В идеале я надеялся DFT-библиотеку нормальную найти

Не по теме:

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


ответ на твой вопрос - находится здесь:
https://www.codeproject.com/Ar... -for-NET-6
однако, если ты хочешь действительно разобраться почему твоя поделка на шарпе не работает - то, советую, всё же разобраться с твоим примером до конца.
1
9 / 9 / 0
Регистрация: 22.12.2017
Сообщений: 295
18.05.2022, 09:43  [ТС]
untyped, я только понял что перепутал оси, могу скинуть чуть позже исходники шарпов
0
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
23.05.2022, 17:48
Цитата Сообщение от Encrypted1010 Посмотреть сообщение
могу скинуть чуть позже исходники шарпов
таки где обещанные сорцы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2022, 17:48
Помогаю со студенческими работами здесь

Перевод кода из с++ в Delphi
помогите пожалуйста перевести код этой функции в делфи, а то ни как не могу догнать как это сделать :) unsigned char...

Перевод кода с С на delphi
Добрый день, помогите пожалуйста перевести код с С на delphi. using System; class Program { static void Main(string...

Перевод кода с Delphi на C++
procedure TForm2.Edit1Change(Sender: TObject); begin ADOTable1.Filtered:=false; ADOTable1.Filter:='Фамилия LIKE...

Перевод кода из С# в Delphi
Здравствуйте. Помогите пожалуйста перевести код из С# в Delphi или исправить ошибки в моём коде на Delphi. Код на С# using System;...

Перевод кода в Delphi
Помогите перевести этот кусок кода из С в Delphi void SelectLine(TRichEdit *Editor, DWORD nLine) { Editor-&gt;SetFocus(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru