Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 545
от 28.07.2006, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 364, Экспертов: 48
В номере:Вопросов: 2, Ответов: 4


Вопрос № 49892: Здравствуйте? Подскажите пожалуйста у меня такой вопрос.В моей программе считываются из реестра буквы, далее берется их код и используется для создания горяцих клавиш. Но проблема в том, что я незнаю как совместить код клавиши с символом $ в переменн...
Вопрос № 49913: как в паскале выполнить команду dos или запустить внешнюю программу ?...

Вопрос № 49.892
Здравствуйте? Подскажите пожалуйста у меня такой вопрос.В моей программе считываются из реестра буквы, далее берется их код и используется для создания горяцих клавиш. Но проблема в том, что я незнаю как совместить код клавиши с символом $ в переменную, при переводе из строкового типа в тип Cardinal этот символ теряется.
использовал способы типа $+'Key'( к примеру но непомогает). Подскажите какой нибудь способ.
Отправлен: 22.07.2006, 14:44
Вопрос задал: Sergei__2006 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Sergei__2006!
Для чего вам $+'Key'? Вообще, что за буквы вы читаете?
Если вы читаете строку из десятичных цифр, то преобразовывайте ее методом StrToInt. Если это шестнадцатеричные цифры, то - используйте функцию из приложения.
Если же вы хотите создать горячую клавишу типа [A]+[$], т.е. с использованием знака доллара в сочетании горячих клавиш, то, насколько мне известно, это невозможно.
А если вы хотите задать метку компилятору Делфи, что это - шестандцатиричное число, то это не нужно. если у вас есть переменная любого целого типа (в т.ч. и Cardinal) - то шестнадцатиричное/десятичное представление - это только запись. В памяти копмьютера всё вообще представляется в двоичном формате.
Если вы хотетли что-то еще, то уж извольте точней описать проблему.

Приложение:

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 22.07.2006, 20:38
Оценка за ответ: 5


Вопрос № 49.913
как в паскале выполнить команду dos или запустить внешнюю программу ?
Отправлен: 22.07.2006, 20:25
Вопрос задал: Мазанов Павел Анатольевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, Мазанов Павел Анатольевич!

Если в Pascal'е - то через процедуру Exec модуля Dos. Обычно такой вызов обрамляют вызовами SwapVectors "для безопасности".

Приложение:

Ответ отправил: Physicist (статус: 9-ый класс)
Ответ отправлен: 22.07.2006, 21:01
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Мазанов Павел Анатольевич!
В Дельфи это делается функцией Shellexecute():
Shellexecute(0, 'open', 'Команда_DOS_или_имя_файла', NIL, NIL, SW_SHOW);
Не забудте только в строке USES чделать ссылку на модуль ShellAPI.
Если же Вы перепутали рассылки и имели в виду старый Паскаль, то тоже самое делается с помощью процедуры Exec().
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.07.2006, 08:37

Отвечает: Coupler
Здравствуйте, Мазанов Павел Анатольевич!
Процедура Exec (Модуль Dos)
Функция: Выполняет указанную программу, передавая за данную строку параметров.
Описание: Exec(маршрут, ком_строка : string)
Примечания: Имя программы указывается в параметре "мар шрут", а строка параметров содержится в параметре "ком_строка". Для выполнения внутренней команды ДОС запусти те файл СОММАND.СОМ. Например:
Exec('COMMAND.COM','/C DIR *.PAS');
/С перед командой является запросом на запуск файла СОММАND.СОМ (но не других программ). Возможные коды ошибок можно получить с помощью функции DosError. Этими кодами мо гут быть 2, 8, 10 и 11. Код завершения процесса можно полу чить с помощью функции DosExitCode.
До начала выполнения программы процедура Ехес не измен яет распределение памяти. Таким образом, при компиляции программы, использующей процедуру Ехес, необходимо обеспе чить задание максимального размера динамически распределяе мой области памяти, иначе памяти может не хватить (DosError = 8).
Прочее: См. также функцию DosExitCode, SwapVectors.
Пример:

{16К выделяется для стека, динамически распределяемая
область не запрашивается и не резервируется}
uses Dos;
var
ProgramName, CmdLine : string;
begin
Write('Программа, которую нужно выполнить (включая
полное имя пути доступа): ');
Readln(ProgramName);
Write('Командная строка, которую нужно передать в прог-
рамму ', ProgramName, ':');
Readln(CmdLine);
Writeln('Начало выполнения Exec...');
Exec(ProgramName, CmdLine);
Writeln('...возврат из Exec');
if DosError <> 0 then
Writeln('Ошибка ДОС #', DosError)
else
Writeln('Вызов Exec прошел успешно. Код завершения
порожденного процесса = ', DosExitCode);
end.
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 23.07.2006, 18:21


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное