Страница 1 из 1

2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 01.10.2008 23:53:23
redmadhat
Использую FPC 2.2.2
1. По ссылке http://freepascal.ru/article//freepasca ... 226211820/ используюу данный материал для обучения. Проблема в том что он невидит mmsystem. При компилации выдает Fatal: Can't find unit mmsystem used by HelloWin. Хотя данная библиотека присуствует в units\windows-base. Вопрос как ее подключить и где?
2. Написал простую прогрумму на winapi:
program primer;
uses
Windows;
begin
if MessageBox(0,'Нажми на кнопку и я угадаю какую Вы нажали','Это моя первая программа',mb_yesno) =id_yes
then MessageBox(0,'Это кнопка Да','Да',mb_ok)
else MessageBox(0,'Это кнопка Нет','Нет',mb_ok);
end.

Компилдятор ругается на Identifier not found "id_yes". Он не нашел константу id_yes. Вопрос как ее найти!

Re: 2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 02.10.2008 07:42:50
Ne1r0N
redmadhat
Надо написать не id_yes а IDYES

Re: 2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 02.10.2008 08:54:05
redmadhat
Понял! Спасибо!
Значит названия констант отличаются! А где найти список этих констант, за будущее?

Re: 2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 02.10.2008 12:34:26
Ne1r0N
redmadhat
Можно в самом редакторе кода нажать правой кнопкой мышки по слову IDYES и выбрать "найти объявления" или зажать ctrl и щёлкнуть по этому слову, и сразу откроется тот модуль, в котором описаны данные константы.

Re: 2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 03.10.2008 17:29:17
redmadhat
Нельзя. Я пробовал. Говорит что нет документации, чтобы легче переносился??? :?

Re: 2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 05.10.2008 12:29:37
v-t-l
redmadhat писал(а):Нельзя. Я пробовал. Говорит что нет документации, чтобы легче переносился???

В качестве IDE - Lazarus поудобнее будет. А FP-IDE - слабоват и глючноват. :)

Re: 2 вопроса: mmsystem & id_yes

СообщениеДобавлено: 05.10.2008 15:42:37
Vadim
redmadhat
Вообще-то завсегда правильно было писать IDYES. Об этом даже и в MSDN написано. А ID_YES - была такая штука в Delphi, вот только зачем она там сидела - абсолютно непонятно. Возможно введена была когда-то для совместимости с чем-то в Delphi 1... :)

Добавлено спустя 16 минут 19 секунд:
redmadhat
Если открыть файл настроек компилятора fpc.cfg, то там можно найти строчки, которые указывают компилятору, где искать готовые модули:
-FuD:\progs\pascal\fpc222/units/$FPCTARGET/rtl
-FuD:\progs\pascal\fpc222/units/$FPCTARGET/*

$FPCTARGET - в данном случае означают i386-win32, т.к. я сейчас сижу в Windows.
Что это означает? В первую очередь компилятор ищет модули в каталоге D:\progs\pascal\fpc222\units\i386-win32\rtl и если он там не нашёл то чего искал, то начинает по очереди обшаривать подкаталоги, которые находятся в каталоге i386-win32, о чём говорит звёздочка во второй строчке. Посмотрите, так ли у Вас? Можете, чтобы компилятор долго модули не искал, добавить ему строку с каталогом нужных модулей, например:
-FuD:\progs\pascal\fpc222/units/$FPCTARGET/rtl
-FuD:\progs\pascal\fpc222/units/$FPCTARGET/winunits-base
-FuD:\progs\pascal\fpc222/units/$FPCTARGET/*

Это полезно, когда процессор не особо быстрый, т.к. подавляющее большинство первоочерёднонужных модулей находятся в каталоге rtl и winunits-base. Последний нужен, если Вы собираетесь делать окошки в винде невиданной красоты и функциональности. :)