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

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


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

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

Выпуск № 944
от 04.10.2007, 21:05

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


Вопрос № 103730: Здраствуйте эксперты. Суть вопроса: Мне нужно переменной S типа string присвоить путь папки откуда запущенно приложение. Также как сделать чтобы можно было открыть только один "экземпляр" программы, то есть чтобы ее нельзя бы...
Вопрос № 103735: Здраствуйте эксперты. Суть вопроса: .... ShowMessage(ch); .... где ch переменная типа char, ch должна содержать код нажатой клавиши на клавиатуре, причем даже если приложение свернуто (неактивно). Заранее спасибо....
Вопрос № 103740: Здраствуйте эксперты. У меня програмка которая убирает себя из списка процесов XP (код ниже). Но при запуске выдает ошибку: "Точка входа в процедуру RegisterServiceProcess не найдена в библиотеке DLL Kernel32.DLL". Что делать?...
Вопрос № 103765: Уважаемые эксперты! Подскажите, как работать с кодировкой UTF-8 (Unicod) Первое: Как загрузить и сохранить такой файл? Второе: Как конвертировать Unicod в Ansi (Windows) и обратно. Приведите хотя бы простые примеры. ..

Вопрос № 103.730
Здраствуйте эксперты.
Суть вопроса:
Мне нужно переменной S типа string присвоить путь папки откуда запущенно приложение.
Также как сделать чтобы можно было открыть только один "экземпляр" программы, то есть чтобы ее нельзя было запустить когда она уже запущенна.
Всем заранее спасибо за ответы.
Отправлен: 28.09.2007, 21:31
Вопрос задал: Иван Ивановввв (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лукьянчиков Дмитрий Алексеевич
Здравствуйте, Иван Ивановввв!

По поводу S и путя папки:
Выносите на форму OpenDialog

if OpenDialog1.Execute then S:=OpenDialog1.FileName;

---------
Программирование, программирование и еще раз программирование...Говорил Страуструп!))
Ответ отправил: Лукьянчиков Дмитрий Алексеевич (статус: Заблокирован)
Ответ отправлен: 28.09.2007, 21:37
Оценка за ответ: 3
Комментарий оценки:
Мне нужно чтобы програма делала это автоматически, а не выбирать файл в диалоге..

Отвечает: Виктор Пырлик
Здравствуйте, Иван Ивановввв!

Для первого:

Label1.Caption := GetCurrentDir;
Label2.Caption := ExtractFileDir(Application.ExeName);
Label3.Caption := ExtractFileDir(ParamStr(0));

Все три метода аналогичны. За исключением GetCurrentDir, если вы переустановите текущий каталог - SetCurrentDir, то вернет новый каталог.

По второму вопросу - код в приложении. Это надо прописать в главном модуле (файл с расширением bpr, по умолчанию - Project1.dpr). Код прокомментирован, и можно добавить там, что бы не сообщение появлялось, а активизировалось запущенная программа.

Приложение:

---------
Если ничего не помогло - надо читать инструкцию

Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 28.09.2007, 22:33
Оценка за ответ: 5
Комментарий оценки:
Спасибо, это то что нужно.


Вопрос № 103.735
Здраствуйте эксперты.
Суть вопроса:
....
ShowMessage(ch);
....
где ch переменная типа char, ch должна содержать код нажатой клавиши на клавиатуре, причем даже если приложение свернуто (неактивно).
Заранее спасибо.
Отправлен: 28.09.2007, 21:57
Вопрос задал: Иван Ивановввв (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Лукьянчиков Дмитрий Алексеевич
Здравствуйте, Иван Ивановввв!

ch:= ReadKey // помоему так...извеняюсь, но точно не помню...

---------
Программирование, программирование и еще раз программирование...Говорил Страуструп!))
Ответ отправил: Лукьянчиков Дмитрий Алексеевич (статус: Заблокирован)
Ответ отправлен: 28.09.2007, 22:02
Оценка за ответ: 3
Комментарий оценки:
по моему это из паскаля. дельфи вобще такую функцию не видит, и в хелпе нет

Отвечает: Denisss

Здравствуйте, Иван Ивановввв!

Вам нужно поставить глобальную ловушку (HOOK) на нажатие клавиш (WH_KEYBOARD). В ловушке следует отсылать сообщения (SendMessage) приложению, поставившему ловушку.

Файл с примером прикреплен к ответу.
Пример можно также скачать здесь: keyex.zip (Файл будет удален через 1 месяц после последнего скачивания).

PS
Переменные типа Char обычно содержат не коды клавиш, а символы. Если Вам нужен именно код, то исправьте в приложенном проекте строчку

MessageBox(Handle, @Char(p^.vkCode), PChar('Код нажатой кнопки'), MB_OK or MB_DEFBUTTON1);

на

MessageBox(Handle, PChar(IntToStr(p^.vkCode)), PChar('Код нажатой кнопки'), MB_OK or MB_DEFBUTTON1);

Удачи!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
----
Ответ отправлен: 29.09.2007, 13:47


Вопрос № 103.740
Здраствуйте эксперты.
У меня програмка которая убирает себя из списка процесов XP (код ниже). Но при запуске выдает ошибку: "Точка входа в процедуру RegisterServiceProcess не найдена в библиотеке DLL Kernel32.DLL". Что делать?

Приложение:

Отправлен: 28.09.2007, 23:25
Вопрос задал: Иван Ивановввв (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Виктор Пырлик
Здравствуйте, Иван Ивановввв!

Под NT это не работает, точнее, это не так оформляется - разная платформа.
Вот ссылка, с примером

Hide Application in Task List

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 29.09.2007, 15:19
Оценка за ответ: 4


Вопрос № 103.765
Уважаемые эксперты!
Подскажите, как работать с кодировкой UTF-8 (Unicod)
Первое: Как загрузить и сохранить такой файл?
Второе: Как конвертировать Unicod в Ansi (Windows) и обратно.
Приведите хотя бы простые примеры.
Отправлен: 29.09.2007, 16:12
Вопрос задал: Кривцов Александр (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: sir henry
Здравствуйте, Кривцов Александр!
UTF-8 и Unicode это немного разные вещи. Доказательством тому служит то, что в Delphi есть функции UTF8ToUnicode и UnicodeToUTF8. :)
Загружать и сохранять файлы с Unicode (или UTF-8, Вы уж там определитесь сами, с чем хотите работать) можно как и любые другие текстовые файлы. Файл он и в Африке файл, вне зависимости от его содержимого. А вот как работать с этим самым содержимым - это уже Ваша проблема. Например FAR сначала перекодирует UTF-8 в DOS кодировку, после чего Вы можете его править. При сохранении происходит перекодировка в обратном порядке - из DOS в UTF-8.
В Delphi для перекодировок есть специальные функции. Две из них я Вам привёл. Для работы с UTF-8 есть функции UTF8ToAnsi и AnsiToUTF8. Они соответственно перекодируют из UTF8 в кодировку ANSI и обратно.
Таким образом можно составить простейший алгоритм по работе с файлом в кодировке UTF-8.
1. Открываете файл обычным образом.
2. Читаете файл построчно.
3. Перекодируете прочитанную строку в ANSI.
4. Заносите перекодированную строку, например, в TMemo.
5. Редактируете, а потом делаете всё в обратном порядке.

Var
f: TextFile;
s: UTF8string;
Begin
//Открываем файл
Assign(F, 'файл.txt');
Reset(F);
While not Eof(F) Do
Begin
ReadLn(F, s); //Считываем строку из файла
Memo1.Lines.Add(UTF8ToAnsi(s)); //Заносим строку в Мемо с перекодировкой
End;
...
End;
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 29.09.2007, 18:45
Оценка за ответ: 5
Комментарий оценки:
Этих функций нет в Delphi5. Есть только для работы с WideString


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.10 от 27.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное