141

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

"ми зрозуміли, що настав час рефакторити код, коли отримали повідомлення компілятора "більше 256 вкладених if не підтримується".

Якщо код доведено до такого стану, то треба задуматись "що я роблю не так ?", стерти все і почати з нуля.

Подякували: ProgramBandera1

142

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Рефакторинг - це якраз не з нуля, а маленькими кроками.
Коротше, викладайте код на GitHub.

Подякували: leofun01, ProgramBandera2

143

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:

7 чи 8 вкладених if результат той самий видало ту ж помилку.

:)

ProgramBandera написав:

... їх в мене поки що 378, але буде іще більше.

:D


ProgramBandera, за що ви так жорстоко з собою ?

https://i.dailymail.co.uk/i/pix/2015/10/24/18/2DBA12FD00000578-3287819-image-a-9_1445706333364.jpg

Подякували: ProgramBandera1

144

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:
koala написав:

"ми зрозуміли, що настав час рефакторити код, коли отримали повідомлення компілятора "більше 256 вкладених if не підтримується".

Напевно що if тут не причому, я переніс

var ComboboxIndexes: set of integer;

в локальну процедуру Time в який 7 чи 8 вкладених if результат той самий видало ту ж помилку.
Я думаю що це ItemIndex перевищує 256 значень. А от їх в мене поки що 378, але буде іще більше.
Тут потрібно set якось замінити щоб визначало множину більшу ніж 255 різних значень.

Set може містити не більше 256 значень(простими словами це масив з 256 елементів). Ви можете замінити його масивом і самостійно реалізувати необхідний ф-ціонал(перетин множин).

Подякували: ProgramBandera1

145

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

topprogrammer написав:

Set може містити не більше 256 значень(простими словами це масив з 256 елементів). Ви можете замінити його масивом і самостійно реалізувати необхідний ф-ціонал(перетин множин).

Іншими словами мені створити свій масив замістивши set.
Я так розумію код має виглядати приблизно як писав пан коала

var WayValues, DisplacementValues, SpeedValues, ComboboxIndexes : MyArray of integer;
...
    WayValues = [7..13]; //скорочення для [7,8,9,10,11,12,13]
    DisplacementValues = [14..20];
    SpeedValues = [21..27];
    ComboboxIndexes = [ComboBox9.ItemIndex, ComboBox10.ItemIndex, ComboBox11.ItemIndex, 
                       ComboBox12.ItemIndex, ComboBox13.ItemIndex, ComboBox14.ItemIndex];
    if WayValues * ComboboxIndexes <> [] and SpeedValues * ComboboxIndexes  <> [] then //* - перетин множин

146

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

Рефакторинг - це якраз не з нуля, а маленькими кроками.
Коротше, викладайте код на GitHub.

Викинув! Але файл Unit1.pas там не хоче відкриватися. Пише (На жаль, але ми не можемо показувати файли, які зараз дуже великі.)

Подякували: leofun011

147

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

О боже...
Мабуть у вас хтось із предків був індусом.

У вас більше ніж 130 тисяч рядків коду в одному файлі (і це якщо не рахувати порожніх рядків).
Файли і компоненти названі неінформативно

Unit1
Unit2
Unit3
...
Label1
Label2
Label3
...
ComboBox1
ComboBox2
...

Вагаюсь. Спробувати щось виправити, чи поставити свічку ...

Подякували: ProgramBandera1

148

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

leofun01 написав:

Мабуть у вас хтось із предків був індусом.

Фу. Можна подумати, ви з першого разу почали ідеальний код писати.

Подякували: ProgramBandera, Torbins2

149 Востаннє редагувалося ProgramBandera (23.06.2019 23:21:04)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

leofun01 написав:

О боже...
Мабуть у вас хтось із предків був індусом.
Вагаюсь. Спробувати щось виправити, чи поставити свічку ...

О боже!!! І що ж мені робити? Їхати в Індію!   *SCRATCH*
Це іще не весь код! Там іще 45 локальних процедур не прописано в процедурі ToCalculate. Вони в Lazarus в мене лишилися. Там великий код зручніше набирати.
Непрописаний код на великий конвертор!
Непрописаний код на калькулятор!
Непрописаний код на графіки!
Не до кінця прописана процедура знайти!
Не до кінця прописана процедура відповідь (Зворотній конвертор)!
І це тільки сьомий клас, а я планую туди іще чотири класи всунути в цей код!

Подякували: leofun011

150

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

Можна подумати, ви з першого разу почали ідеальний код писати.

Ні, звичайно. І навіть зараз в мене на GitHub'і висить купка коду, за який мені дуже соромно.
Але я не пам'ятаю жодного випадку, коли б створений мною файл мав більше ніж 3000 рядків. Бо коли рядків ставало більше ніж 2к, в мене виникало відчуття, що я щось роблю не так.


ProgramBandera написав:

Це іще не весь код!

А все ж добре, що ви код виклали. Завтра попробую його зкомпілювати і розібрати.

Подякували: ProgramBandera1

151 Востаннє редагувалося leofun01 (24.06.2019 07:00:31)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Я завантажив і встановив Lazarus v2.0.2, клонував собі ваш репозиторій і конвертував проект (в *.lpi), але тепер не знаю як додати пакунок, який містить JvExStdCtrls і JvRichEdit. Без тих модулів код не компілюється. Якщо хтось працював з Lazarus'ом, напишіть як то робиться.

ProgramBandera, на майбутнє : не іменуйте файли кирилицею, є багато програм, які її не підтримують (Lazarus в тому числі).

upd:
XPMan (використовується в файлі "Unit1.pas") теж не знаю де шукати.

ProgramBandera, відкрийте свої релізи і додайте реліз:

  1. Кнопка "Create a new release"

  2. Заповніть поля "Tag" і "Release title"

  3. "Attach binaries", виберіть ваш зкомпільований файл *.exe, "Ok"

  4. "Publish release"

152

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

А від мене - фокус на кілька сотень рядків.
У вас там є повторюваний (з точністю до змінних) фрагмент

14..20: begin
           for idx0 := 4 to 8 do
            ComboBox16.Items.Add(UNITS_M_U[idx0]);
           for idx1 := 15 to 21 do
            ComboBox16.Items.Add(UNITS_P_С2[idx1]);

           if ComboBox10.ItemIndex = 14 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end

            else

            if ComboBox10.ItemIndex = 15 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's1 - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end

            else

            if ComboBox10.ItemIndex = 16 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's2 - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end

            else

            if ComboBox10.ItemIndex = 17 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's3 - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end

            else

            if ComboBox10.ItemIndex = 18 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's4 - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end

            else

            if ComboBox10.ItemIndex = 19 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's5 - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end

            else

            if ComboBox10.ItemIndex = 20 then
            begin
             BitBtn1.Top := 642;
             BitBtn2.Top := 642;
             CheckBox3.Caption := 's6 - Від''ємне переміщення';
             CheckBox3.Visible := True;
             Options[2] := True;
            end;
          end;

1. ComboBox10.ItemIndex може бути лише від 10 до 14, тобто інших значень не буде. В усіх if-else є спільна частина, винесемо її на початок, прибираємо зайві begin-end:

14..20: begin
           for idx0 := 4 to 8 do
            ComboBox16.Items.Add(UNITS_M_U[idx0]);
           for idx1 := 15 to 21 do
            ComboBox16.Items.Add(UNITS_P_С2[idx1]);
           BitBtn1.Top := 642;
           BitBtn2.Top := 642;
           CheckBox3.Visible := True;
           Options[2] := True;

           if ComboBox10.ItemIndex = 14 then
             CheckBox3.Caption := 's - Від''ємне переміщення';
           else
           if ComboBox10.ItemIndex = 15 then
             CheckBox3.Caption := 's1 - Від''ємне переміщення';
           else
           if ComboBox10.ItemIndex = 16 then
             CheckBox3.Caption := 's2 - Від''ємне переміщення';
           else
           if ComboBox10.ItemIndex = 17 then
            CheckBox3.Caption := 's3 - Від''ємне переміщення';
           else
           if ComboBox10.ItemIndex = 18 then
            CheckBox3.Caption := 's4 - Від''ємне переміщення';
           else
           if ComboBox10.ItemIndex = 19 then
            CheckBox3.Caption := 's5 - Від''ємне переміщення';
           else
           if ComboBox10.ItemIndex = 20 then
            CheckBox3.Caption := 's6 - Від''ємне переміщення';
         end;

2. Проголошуємо функцію

Function NumberedString(format_string:string, number:integer) : string;
var number_string : string;
begin
    if number<>0 then number_string:=IntToStr(number)
    else number_string:='';
    result := Format(format_string, [number_string]);
end;

і тепер робимо

14..20: begin
           for idx0 := 4 to 8 do
             ComboBox16.Items.Add(UNITS_M_U[idx0]);
           for idx1 := 15 to 21 do
             ComboBox16.Items.Add(UNITS_P_С2[idx1]);
           BitBtn1.Top := 642;
           BitBtn2.Top := 642;
           CheckBox3.Visible := True;
           Options[2] := True;
           CheckBox3.Caption := NumberedString('s%s - Від''ємне переміщення',ComboBox10.ItemIndex-14);
          end;

Було 80 рядків, стало 11. І таких місць кілька.

153

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Я трохи розібрався в Lazarus'і, пододавав пакунки (спочатку не ті, а потім ті що треба).
Короче, виявилося, що Lazarus і Delphi - це 2 зовсім різні IDE. Перекинути проект з Delphi на Lazarus це трохи проблема, бо пакунки і компоненти між цими IDE зовсім різні.
Так як купувати Deplhi я зараз не збираюся, то змушений повідомити : я звалюю.

Подякували: LoganRoss, ProgramBandera2

154

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

>змушений повідомити : я звалюю
робіть окремий тред про цю подію

Подякували: topprogrammer, koala, leofun01, ProgramBandera4

155 Востаннє редагувалося ProgramBandera (24.06.2019 20:56:12)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Що за неподобство! Хотів зберегти проект в нову папку, здається як зберіг, А зараз не можу компілювати його видає помилку
[dcc32 Fatal Error] Програма або блок 'Фізика' рекурсивно використовує себе
Вибачаюсь все пішло просто треба було переіменувати дещо в коді

uses Конвертор, Калькулятор, Графіки;

156

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

leofun01 написав:

Так як купувати Deplhi я зараз не збираюся, то змушений повідомити : я звалюю.

А я надіявся що ви код рубанете мені до трьох тисяч рядків!  *SORRY*

157

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:

А я надіявся ...

Я теж на це надіявся,
поставив IDE, порпобував зкомпілювати => error,
створив новий проект, додав існуючі форми, error,
конвертував існуючий проект, error,
попереписував компоненти, error.

Зараз моя проблема в тому, що я не знайшов аналога TJvRichEdit для Lazarus.

Подякували: ProgramBandera1

158 Востаннє редагувалося ProgramBandera (24.06.2019 22:29:20)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

А від мене - фокус на кілька сотень рядків.
У вас там є повторюваний (з точністю до змінних) фрагмент
і тепер робимо

14..20: begin
           for idx0 := 4 to 8 do
             ComboBox16.Items.Add(UNITS_M_U[idx0]);
           for idx1 := 15 to 21 do
             ComboBox16.Items.Add(UNITS_P_С2[idx1]);
           BitBtn1.Top := 642;
           BitBtn2.Top := 642;
           CheckBox3.Visible := True;
           Options[2] := True;
           CheckBox3.Caption := NumberedString('s%s - Від''ємне переміщення',ComboBox10.ItemIndex-14);
          end;

Було 80 рядків, стало 11. І таких місць кілька.

Пане Koala де ви були коли я процедуру procedure TForm1.Converter_in_CI; (конвертора) писав? Дякую!!!

Я спробую її використати для цього коду

case ComboBox9.ItemIndex of
 0   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          4: RichEdit1.Lines.Add('t = t1');
          5: RichEdit1.Lines.Add('t = t2');
          6: RichEdit1.Lines.Add('t = t3');
          7: RichEdit1.Lines.Add('t = t4');
          8: RichEdit1.Lines.Add('t = t5');
          9: RichEdit1.Lines.Add('t = t6');
          end;
         end
         else
         begin
          Variables[1,0] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,0] := Variables[1,0]*st1;
          end;

          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,0]);
             end;

          2: begin
              RichEdit1.Lines.Add('t = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,0]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,0]) + '  ' + 'Секунд');
         end;
        end;

 1   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t1 = t');
          5: RichEdit1.Lines.Add('t1 = t2');
          6: RichEdit1.Lines.Add('t1 = t3');
          7: RichEdit1.Lines.Add('t1 = t4');
          8: RichEdit1.Lines.Add('t1 = t5');
          9: RichEdit1.Lines.Add('t1 = t6');
          end;
         end
         else
         begin
          Variables[1,1] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,1] := Variables[1,1]*st1;
          end;
          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t1 = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,1]);
             end;

          2: begin
              RichEdit1.Lines.Add('t1 = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,1]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,1]) + '  ' + 'Секунд');
         end;
        end;

 2   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t2 = t');
          4: RichEdit1.Lines.Add('t2 = t1');
          6: RichEdit1.Lines.Add('t2 = t3');
          7: RichEdit1.Lines.Add('t2 = t4');
          8: RichEdit1.Lines.Add('t2 = t5');
          9: RichEdit1.Lines.Add('t2 = t6');
          end;
         end
         else
         begin
          Variables[1,2] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,2] := Variables[1,2]*st1;
          end;
          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t2 = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,2]);
             end;

          2: begin
              RichEdit1.Lines.Add('t2 = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,2]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,2]) + '  ' + 'Секунд');
         end;
        end;

 3   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t3 = t');
          4: RichEdit1.Lines.Add('t3 = t1');
          5: RichEdit1.Lines.Add('t3 = t2');
          7: RichEdit1.Lines.Add('t3 = t4');
          8: RichEdit1.Lines.Add('t3 = t5');
          9: RichEdit1.Lines.Add('t3 = t6');
          end;
         end
         else
         begin
          Variables[1,3] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,3] := Variables[1,3]*st1;
          end;
          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t3 = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,3]);
             end;

          2: begin
              RichEdit1.Lines.Add('t3 = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,3]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,3]) + '  ' + 'Секунд');
         end;
        end;

 4   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t4 = t');
          4: RichEdit1.Lines.Add('t4 = t1');
          5: RichEdit1.Lines.Add('t4 = t2');
          6: RichEdit1.Lines.Add('t4 = t3');
          8: RichEdit1.Lines.Add('t4 = t5');
          9: RichEdit1.Lines.Add('t4 = t6');
          end;
         end
         else
         begin
          Variables[1,4] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,4] := Variables[1,4]*st1;
          end;
          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t4 = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,4]);
             end;

          2: begin
              RichEdit1.Lines.Add('t4 = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,4]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,4]) + '  ' + 'Секунд');
         end;
        end;

 5   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t5 = t');
          4: RichEdit1.Lines.Add('t5 = t1');
          5: RichEdit1.Lines.Add('t5 = t2');
          6: RichEdit1.Lines.Add('t5 = t3');
          7: RichEdit1.Lines.Add('t5 = t4');
          9: RichEdit1.Lines.Add('t5 = t6');
          end;
         end
         else
         begin
          Variables[1,5] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,5] := Variables[1,5]*st1;
          end;
          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t5 = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,5]);
             end;

          2: begin
              RichEdit1.Lines.Add('t5 = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,5]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,5]) + '  ' + 'Секунд');
         end;
        end;

 6   :  begin
         if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t6 = t');
          4: RichEdit1.Lines.Add('t6 = t1');
          5: RichEdit1.Lines.Add('t6 = t2');
          6: RichEdit1.Lines.Add('t6 = t3');
          7: RichEdit1.Lines.Add('t6 = t4');
          8: RichEdit1.Lines.Add('t6 = t5');
          end;
         end
         else
         begin
          Variables[1,6] := StrToFloat(Edit1.Text);
          if CheckBox1.Checked then
          begin
           Bring_to_Power1;
           Variables[1,6] := Variables[1,6]*st1;
          end;
          case ComboBox15.ItemIndex of
          1: begin
              RichEdit1.Lines.Add('t6 = ' + Edit1.Text + '*60');
              Minute_multiply(Variables[1,6]);
             end;

          2: begin
              RichEdit1.Lines.Add('t6 = ' + Edit1.Text + '*3600');
              Hour_multiply(Variables[1,6]);
             end;
          end;
          RichEdit1.Lines.Add(ComboBox9.Text + '  ' + '=  ' + FloatToStr(Variables[1,6]) + '  ' + 'Секунд');
         end;
        end;

159 Востаннє редагувалося ProgramBandera (24.06.2019 22:52:22)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

leofun01 написав:

Зараз моя проблема в тому, що я не знайшов аналога TJvRichEdit для Lazarus.

Поставте собі Community Edition: https://www.embarcadero.com/products/delphi/starter Вона на рік безкоштовна, а через рік можна буде скачати нову версію.

А потім

Заходите на https://github.com/project-jedi/jcl
Клікаєте по кнопці Clone or download, потім Download ZIP.
Архів розпаковуєте кудись, де його вміст зможе довго лежати і не заважати вам, але буде доступним, коли ви відкриваєте Делфі.
Потім заходите іще сюди https://github.com/project-jedi/jedi і сюди https://github.com/project-jedi/jvcl, виконуєте ті ж дії.
Файли з папки ...\jedi-master скопіюйте в ...\jcl-master\jcl\source\include\jedi
Закрийте Делфі.
Зайдіть в папку ...\jcl-master\jcl і запустіть файл Install.bat
Запуститься інсталятор, на вкладці MPL 1.1 License поставте галочку, потім клікніть по кнопці Install і декілька разів Yes.
В повідомленні ...finished... клікніть OK, а потім Quit.
Потім зайдіть в папку ...\jvcl-master\jvcl і запустіть файл Install.bat
Всюди клікайте Next, а в кінці Finish.
Коли відкриєте свій проект, то на палітрі компонент у вас з'явиться закладка Jv Edits, киньте звідти на форму TJvRichEdit.
Свій RichEdit1 видаліть, а у нового Name поміняйте на RichEdit1.
Все має працювати як і раніше, але з'являться нові можливості. Отут є демо-проект, де показано, як ними користуватися: ...\jvcl-master\jvcl\examples\JvRichEdit.

Звичайно якщо іще є бажання допомогти

Подякували: leofun011

160 Востаннє редагувалося leofun01 (25.06.2019 00:01:41)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:

Поставте собі Community Edition: https://www.embarcadero.com/products/delphi/starter

www.embarcadero.com написав:

https://i.ibb.co/Pg3v03g/Embarcadero-Site-Error.png

Та ну їх (embarcadero) в сраку. То їм номер телефону подай, то їх мій номер не влаштовує, а про який solution йде мова я взагалі не знаю.