321

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

Конфлікт можливий лише якщо в двох res-файлах будуть ресурси з однаковими іменами. Наприклад в GeometrySound.res у вас є Square.wav, і в MathematicalSound.res у вас також є Square.wav, тоді буде конфлікт.

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

322

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

Доброї ночі! А що в Embarcadero RAD Studio 10.3 вже не має модуля MMSystem? Відповідно і функції PlaySound немає? А чим їх заманили?

323

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

Схоже, це зветься WinApi. Тому що PlaySound - це саме звідти.

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

324

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

koala написав:

Схоже, це зветься WinApi. Тому що PlaySound - це саме звідти.

Дякую! В Uses потрібно добавити Winapi.MMSystem а не MMSystem.

325

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

Доброго вечора усім! Створюю свій клас TPhysicalQuantities.

type

    TPhysicalQuantities = class
    public
     Size: extended;
     UnitOfMeasurement: string;

     procedure OutputValue (Size: extended; UnitOfMeasurement: string);
     constructor CreateOutputValue (Size: extended; UnitOfMeasurement: string);
     function ToStr: string;
     function ToFlo: extended;
    end;

Підкажіть будь-ласка, а полю UnitOfMeasurement можна задати колір тексту якийсь інший ніж чорний? Якщо можна то як це зробити для прикладу будь-який інший колір задати.

326

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

Можете маркером по екрану навести.

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

327

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

koala написав:

Можете маркером по екрану навести.

Розумна відповідь. І як я не додумався раніше. *THUMBSUP*

328

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

Поле - воно в пам'яті. Це кілька, може, сотень байтів. З урахуванням щільності інформації в сучасних модулях пам'яті, я не певен, що там одна хвиля видимого світла накладеться. Тобто кольору точно не буде.
Вам треба щось інше. Що - я не знаю, от і даю найкращу пораду в цих умовах

329 Востаннє редагувалося ProgramBandera (26.05.2020 22:35:00)

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

Якому модулю належить тип TColor? Пане koala ви можете не відповідати, я можу почекати і до завтра можливо пан Torbins щось корисне підкаже.

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

330

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

О, то ви хочете не "полю UnitOfMeasurement можна задати колір тексту якийсь інший ніж чорний", а зберігати в TPhysicalQuantities колір для того, щоб виводити різні одиниці різними кольорами? Бачите різницю?

ProgramBandera написав:

Якому модулю належить тип TColor?

Я в таких випадках набираю в гуглі delphi TColor. Перший же результат каже, що це Graphics.TColor.

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

331 Востаннє редагувалося ProgramBandera (26.05.2020 23:50:34)

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

koala написав:

О, то ви хочете  зберігати в TPhysicalQuantities колір для того, щоб виводити різні одиниці різними кольорами? Бачите різницю?

Так пане koala я хочу створити медод яким би міг виводити текст приблизно ось так:

https://replace.org.ua/uploads/images/6671/4772c1d0bf69d8ef7117b7c8608d43b9.png

Щоб цифри відображались чорним кольром, а текст (Одиниці вимірювань) кожне різним кольором.
Секунда                                с. - зеленим
Довжина                               м. -червоним
Маса                                    кг. - жовтим
Сила електричного струму      А. - фіолетовим
і т.д. В ідеалі щоб текст з однаковим кольором ще й мигав синхронно.

Якщо в UnitOfMeasurement: string; не можливо зберігати колір тексту, то виходить потрібно завести ще одне поле для того щоб якимось методом зберігати колір, а потім вже якось надати його тексту який зберігається в UnitOfMeasurement.

Дякую що зрозуміли!

332

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

Це було моє друге припущення. Перше - що ви хочете, щоб в IDE конкретно ідентифікатор UnitOfMeasurement підсвічувався іншим кольором. Тому я й написав універсальний варіант.

333

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

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

334

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

При наведенні на компонент Image миші потрібно щоб автоматично збільшувався розмір картинки. Підкажіть де це виставляти в подіях чи властивостях компонента Image?

335

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

OnMouseEnter/OnMouseLeave.

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

336

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

Добрий вечір панове!

1) Підкажіть як поєднати типи PChar та string, якщо це взагалі можливо?
Є ось така процедура, в якій видає помилку несумісні типи PChar та string. Та ще й до всього пише попередження PChar - небезпечний тип:

procedure TForm1.Button1Click(Sender: TObject);
var
 a: string;
 Sound: PChar;
begin
 a := 'S' + Edit1.Text;
 Sound := a;
 PlaySound(Sound, 0, SND_RESOURCE or SND_ASYNC);

end;

Потрібно це для того щоб при введенні в Edit1 слова (наприклад) Куб програвався файл ресурсу GeometrySounds.res з назвою 'SКуб'.

2) І друге питання: функція PlaySound в залежності від виставлених прапорців так або інакше програє звуковий файл. А якщо ресурс складається з текстових файлів, то як дістати текст з ресурсу. Наприклад в GeometryText.res є текстовий файл 'SКуб', які є функції щоб я змінній присвоїв текст з файла SКуб, який знаходиться в ресурсі з назвою GeometryText.res?

337

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

1. Що таке String і PChar. PChar - це адреса в пам'яті послідовності символів, що закінчуються символом з кодом 0 (це позначається #0 у Delphi, як не помиляюся). Якщо випадково щось туди записати - то може щось зіпсуватися, і PChar буде показувати на послідовність, що не закінчується, або ж взагалі у випадкове місце, коротше, PChar-и мають жити якомога менше.
String - це, в першому наближені, структура з PChar і integer - довжини стрічки. Якщо працювати зі string виключно відповідними функціями, то PChar буде коректно оброблятися; наприклад, якщо буде потрібно збільшити довжину стрічки, то буде виділено пам'ять у новому місці, скопійовано туди стару стрічку і змінено значення PChar на нове, а стара пам'ять звільнена.
Відповідно, треба намагатися не створювати зайвих PChar-ів.

PlaySound(PChar('S'+Edit1.Text), ... );

чи
a:='S'+Edit1.Text;

PlaySound(PChar(a), ... );

В обох випадках string буде перетворено на PChar (а це перетворення, фактично, витягає PChar зі string-а); але PChar житиме виключно від виклику функції до повернення з неї, і string гарантовано не встигне змінитися.
2. Щось на кшталт TResourceStream.

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

338

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

Нащо так ускладнювати, не простіше через умову програвати потрібний wav файл?

339 Востаннє редагувалося ProgramBandera (02.07.2020 16:57:18)

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

Droid 77 написав:

Нащо так ускладнювати, не простіше через умову програвати потрібний wav файл?

Напевно що простіше коли у вас є 10 wav файлів. А коли їх 1000? Довжилезний код не хочеться писати, простіше написати одну функцію і підставляти в неї змінну з назвою файлу.

340

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

koala написав:

2. Щось на кшталт TResourceStream.

Пане koala підкажіть будь-ласка що не правильно роблю. Як дістати текст з ресурсу?
З того що я накопав в інтернеті я зрозумів:

1) Я маю змінній (наприклад s) присвоїти тип TResourceStream

var
 s: TResourceStream;

2) Наскільки я розумію, далі для динамічних даних визивається конструктор, і ось тут напевно я щось не правильно пишу!
Тому що програма в мене компілюється та при кліку по кнопці вона виводить повідомлення про помилку: GeometryText.res не знайдено!

s := TResourceStream.Create(HInstance, 'GeometryText.res', RT_RCDATA);

3) Далі я думав що рядок коду приведений в низу присвоює змінній s текст з файлу під номером 5 який знаходиться в ресурсі
GeometryText.res. Та там тільки вибиває помилку пов'язаною з адресою в пам'яті.

s := TResourceStream.CreateFromID(HInstance, 5, RT_RCDATA);

4) І останнє. Цю змінну потрібно вивести в RichEdit1.

try
    RichEdit1.Lines.LoadFromStream(S);
  finally
    S.Free;
  end;

Ось повний код процедурки починаючи з implementation:

implementation

{$R *.dfm}
{$R GeometryText.res}

procedure TForm1.Button1Click(Sender: TObject);
var
 s: TResourceStream;
begin
 s := TResourceStream.Create(HInstance, 'GeometryText.res', RT_RCDATA);
 s := TResourceStream.CreateFromID(HInstance, 5, RT_RCDATA);
 try
    RichEdit1.Lines.LoadFromStream(s);
  finally
    s.Free;
  end;
end;