81

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

leofun01 написав:

На його місці мені було би соромно таке кидати на GitHub. Але хоча би Git необхідно використовувати.

Дякую за критику!!! :) Я вперше стикнувся з Паскалем і встановив Delphi в грудні минулого року тобто шість місяців тому, і ця програма в мене вже потрохи рахує. А до того я останній раз програмував ще в школі в 90-х на комп'ютері Электроника УКНЦ, мова програмування була здається Бейсик. І от щоб вам не було соромно то краще допомогли б її правильно написати. А мені не соромно, це мій перший проект. І хоч він мені важко дається я їм поки що пишаюсь. Та і друзі малого зі школи вже починають дякувати.

Подякували: ReAl, leofun012

82

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

FakiNyan написав:

я б бітбукет використовував, бо там приватні репозиторії є.

Безплатні приватні наче віднедавна вже й на гітхабі є.
Хоча у мене приватні у бітовому кошику. Втім, там не програми.

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

83

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

ProgramBandera написав:

краще допомогли б її правильно написати.

В такому разі вам необхідно викласти її на якийсь сервіс типу GitHub або GitLab, тоді допомагати стане в рази легше.

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

84 Востаннє редагувалося ProgramBandera (20.05.2019 22:43:26)

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

Добрий вечір панове!
Навіть не знаю як правильно сформулювати питання.
Підкажіть будь ласка чи можливо в RichEdit зробити посилання на електронну пошту?
Наразі в мене виводиться текст як на скріншоті.

https://replace.org.ua/uploads/images/6671/bfb5d55a6400ea08fa2e7385a3eb5abd.bmp

Чи можливо зробити так, щоб при кліку лівою кнопкою миші відкривалось в Google Chrome  посилання на пошту, чи просто відкривався Google Chrome, або просто браузер.

Потрібно щоб користувач міг мені відіслати лист з описом помилки, Навіть не знаю як це правильно сформулювати.

Ось код який виводить це повідомлення

 RichEdit1.SelAttributes.Color := clRed;
 RichEdit1.Lines.Add('Знайшли помилку в розрахунках програми!');
 RichEdit1.SelAttributes.Color := clRed;
 RichEdit1.Lines.Add('Надішліть лист з докладним описом помилки на адресу!');
 RichEdit1.SelAttributes.Color := clBlue;
 Richedit1.SelAttributes.Style := [fsUnderline];
 RichEdit1.Lines.Add('sergiymironchuk24@gmail.com');

85

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

Спробуйте так:

RichEdit1.Lines.Add('mailto:sergiymironchuk24@gmail.com');
Подякували: ProgramBandera1

86 Востаннє редагувалося koala (21.05.2019 12:07:46)

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

Я бачу 3 способи:
1. Обробляти вручну повідомлення CN_NOTIFY (EN_LINK), приклад тут: https://stackoverflow.com/questions/425 … -trichedit
Правильно, але довго і складно.
2. Перехоплювати клік по RichEdit (OnClick чи OnMouseUp) і обробляти самостійно: http://www.delphipages.com/forum/showthread.php?p=67083
Нескладно, але треба відстежувати положення.
3. Забити на TRichEdit, помилки мають оброблятися не у звичайному потоці подій. Створіть окреме вікно, поставте там TLabel із посиланням, а ще краще - відправляйте всю потрібну інформацію самостійно (ви ж змінні можете записати? І останні дії? От і записуйте, а не просіть користувача).
Як на мене, саме так і робіть.

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

87

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

ProgramBandera
Ви TRichEdit на TJvRichEdit замінили? Я кілька сторінок назад писав.

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

88

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

ProgramBandera, ви ж бачите, люди ставлять вам питання, на які можна було б просто подивитися репозиторій.

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

89

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

Torbins написав:

ProgramBandera
Ви TRichEdit на TJvRichEdit замінили? Я кілька сторінок назад писав.

Поки що не замінив, не вистачає часу цим зайнятися так як прописую процедуру обрахунку даних, і в мене виникли додаткові проблеми. Потрібно додавати на форму додаткові CheckBox для всяких опцій і обробляти їх. Я коли закінчу з тим щоб вона в мене все правильно рахувала, тоді займусь виводом інформації і обов'язково його поміняю.

90

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

koala написав:

а ще краще - відправляйте всю потрібну інформацію самостійно (ви ж змінні можете записати? І останні дії? От і записуйте, а не просіть користувача).
Як на мене, саме так і робіть.

Розумієте пане koala це робиться для того щоб тестувати програму, для розширення можливостей. На ті задачі які я знайшов в підручниках (навіть російськомовних) я вже закінчую прописувати функції та процедури. А придумувати якісь нові свої задачі в мене вже закінчуються ідеї. Пізніше коли я в програму буду додавати 8-й 9-й 10-й та 11-й клас там буде цікавіше. А поки що будемо надіятися на лінивих учнів які будуть присилати нові задачі.

91 Востаннє редагувалося ProgramBandera (21.05.2019 22:17:16)

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

Підкажіть чому не можу присвоїти глобальній змінній Options типу boolean значення True або False!!!

procedure TForm1.Options;
begin
  if ((Options1) or (Options2) or (Options3) or (Options4) or (Options5) or (Options6)) = True then
   begin
    Options := True;
   end
  else
  begin
   Options := False;
  end;
  if Options = False then
   begin
    BitBtn1.Top := 544;
    BitBtn2.Top := 544;
    CheckBox2.Caption := '';
    CheckBox3.Caption := '';
    CheckBox4.Caption := '';
    CheckBox5.Caption := '';
    CheckBox6.Caption := '';
    CheckBox7.Caption := '';
    CheckBox2.Visible := False;
    CheckBox3.Visible := False;
    CheckBox4.Visible := False;
    CheckBox5.Visible := False;
    CheckBox6.Visible := False;
    CheckBox7.Visible := False;
   end;
end;

Видає помилку
[dcc32 Error] Unit1.pas (120410): E2064 Не можна призначити ліву сторону

А мені потрібно призначити їй значення Options := True якщо хоч одна з Options1..6 має значення True. В іншому випадку потрібно їй призначити значення False.

92

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

procedure TForm1.Options;

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

93

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

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

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

94

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

Спробував задати масив

var
Options: array [0..6] of boolean;

і вирішити проблему через (case of) всерівно не допомогло

case Options of
   1 : begin
        if Options[1] = True Then
         Options[0] := True;
       end;

   2 : begin
        if Options[2] = True Then
         Options[0] := True;
       end;

   3 : begin
        if Options[3] = True Then
         Options[0] := True;
       end;

   4 : begin
        if Options[4] = True Then
         Options[0] := True;
       end;

   5 : begin
        if Options[5] = True Then
         Options[0] := True;
       end;

   6 : begin
        if Options[6] = True Then
         Options[0] := True;
       end

   else
    Options[0] := False;
   end;

Видало помилку
[dcc32 Error] Unit1.pas (125810): E2001 Потрібний звичайний тип

Можливо хтось знає як мені призначити значення True та False Для змінної Options або для комірки масиву Options[0]???

95 Востаннє редагувалося topprogrammer (21.05.2019 23:13:17)

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

помилка тут case Options of там треба використовувати простий тип даних, а не масив.

А в попередньому випадку Ви присвоювали значення процедурі, що робити не можна... Ви б знайшли якусь більш менш нормальну книгу по Делфі, там такі дрібниці повинні бути описані.

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

96 Востаннє редагувалося ProgramBandera (22.05.2019 00:35:08)

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

topprogrammer написав:

помилка тут case Options of там треба використовувати простий тип даних, а не масив.

А в попередньому випадку Ви присвоювали значення процедурі, що робити не можна... Ви б знайшли якусь більш менш нормальну книгу по Делфі, там такі дрібниці повинні бути описані.

Дякую! Питання знято! Я вирішив його. Щоб не перебирати шість змінних на False True, а тоді присвоювати сьомій відповідно False або True, я просто перевірив шість змінних відповідності False і все запрацювало!!! В кожному ComboBox Change прописав код з відповідною змінною.

Для ComboBox9Change

Options1 := False;
 if ((Options1 = False) and (Options2 = False) and (Options3 = False) and (Options4 = False) and (Options5 = False) and (Options6 = False)) then
  begin
   BitBtn1.Top := 544;
   BitBtn2.Top := 544;
   CheckBox2.Caption := '';
   CheckBox3.Caption := '';
   CheckBox4.Caption := '';
   CheckBox5.Caption := '';
   CheckBox6.Caption := '';
   CheckBox7.Caption := '';
   CheckBox2.Visible := False;
   CheckBox3.Visible := False;
   CheckBox4.Visible := False;
   CheckBox5.Visible := False;
   CheckBox6.Visible := False;
   CheckBox7.Visible := False;
  end
 else
  begin
    if Options1 = False then
     begin
      CheckBox2.Caption := '';
      CheckBox2.Visible := False;
     end;
  end;

Для ComboBox10Change

Options2 := False;
 if ((Options1 = False) and (Options2 = False) and (Options3 = False) and (Options4 = False) and (Options5 = False) and (Options6 = False)) then
  begin
   BitBtn1.Top := 544;
   BitBtn2.Top := 544;
   CheckBox2.Caption := '';
   CheckBox3.Caption := '';
   CheckBox4.Caption := '';
   CheckBox5.Caption := '';
   CheckBox6.Caption := '';
   CheckBox7.Caption := '';
   CheckBox2.Visible := False;
   CheckBox3.Visible := False;
   CheckBox4.Visible := False;
   CheckBox5.Visible := False;
   CheckBox6.Visible := False;
   CheckBox7.Visible := False;
  end
 else
  begin
    if Options2 = False then
     begin
      CheckBox3.Caption := '';
      CheckBox3.Visible := False;
     end;
  end;

і так далі.

97

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

Ще раз, якщо ви не зрозуміли: у вас процедура звалася так само, як і змінна, у цьому і була проблема.
Ну і вам тут не вистачає фахової освіти, ІТ-шних студентів не дарма ганяють через перетворення логічних виразів, КНФ/ДНФ, різні закони деМоргана і т.д.

if ((Options1 = False) and (Options2 = False) and (Options3 = False) and (Options4 = False) and (Options5 = False) and (Options6 = False)) then

еквівалентно

if ((not Options1) and (not Options2) and (not Options3) and (not Options4) and (not Options5) and (not Options6)) then

а це можна перетворити на

if not (Options1 or  Options2 or Options3 or Options4 or Options5 or Options6) then

Знову ж таки, додаткова проблема була в тому, що ви присвоювали значення глобальній змінній (і самі уточнювали, що це саме глобальна змінна), а отже, це значення могло використовуватися поза межами процедури. Якщо вам не треба використовувати значення за межами процедури - робіть локальну змінну, бо потім якось ви одну змінну десь поміняєте в одній процедурі і не будете розуміти, чому вона змінюється в іншій. Глобальні змінні - зло.

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

98

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

І, як завжди, якщо маєте 6 змінних Options1..Options6 - значить, вам потрібен масив Options:array[1..6] of boolean;

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

99 Востаннє редагувалося ProgramBandera (22.05.2019 19:38:56)

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

koala написав:

а це можна перетворити на

if not (Options1 or  Options2 or Options3 or Options4 or Options5 or Options6) then

Оце дуже хороша відповідь пане koala!!! Дякую!!!
А за однакову назву глобальної змінної та процедури я здогадався тільки з відповіді пана topprogrammer

100

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

Добрий вечір панове! В Delphi є якась стандартна функція для зміни знаку дійсного числа на протилежний?
Наприклад

Variables[1,0] := StrToFloat(Edit1.Text);

Чи можливо Variables[1,0] змінити знак на протилежний?