Вопрос № 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 присвоить путь папки откуда запущенно приложение.
Также как сделать чтобы можно было открыть только один "экземпляр" программы, то есть чтобы ее нельзя было запустить когда она уже запущенна.
Всем заранее спасибо за ответы.
Отвечает: Лукьянчиков Дмитрий Алексеевич
Здравствуйте, Иван Ивановввв!
По поводу S и путя папки:
Выносите на форму OpenDialog
if OpenDialog1.Execute then S:=OpenDialog1.FileName;
--------- Программирование, программирование и еще раз программирование...Говорил Страуструп!))
Ответ отправил: Лукьянчиков Дмитрий Алексеевич (статус: Заблокирован)
Ответ отправлен: 28.09.2007, 21:37 Оценка за ответ: 3 Комментарий оценки: Мне нужно чтобы програма делала это автоматически, а не выбирать файл в диалоге..
Отвечает: Виктор Пырлик
Здравствуйте, Иван Ивановввв!
Все три метода аналогичны. За исключением GetCurrentDir, если вы переустановите текущий каталог - SetCurrentDir, то вернет новый каталог.
По второму вопросу - код в приложении. Это надо прописать в главном модуле (файл с расширением bpr, по умолчанию - Project1.dpr). Код прокомментирован, и можно добавить там, что бы не сообщение появлялось, а активизировалось запущенная программа.
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 28.09.2007, 22:33 Оценка за ответ: 5 Комментарий оценки: Спасибо, это то что нужно.
Вопрос № 103.735
Здраствуйте эксперты.
Суть вопроса:
....
ShowMessage(ch);
....
где ch переменная типа char, ch должна содержать код нажатой клавиши на клавиатуре, причем даже если приложение свернуто (неактивно).
Заранее спасибо.
Отвечает: Лукьянчиков Дмитрий Алексеевич
Здравствуйте, Иван Ивановввв!
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". Что делать?
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 29.09.2007, 15:19 Оценка за ответ: 4
Вопрос № 103.765
Уважаемые эксперты!
Подскажите, как работать с кодировкой UTF-8 (Unicod)
Первое: Как загрузить и сохранить такой файл?
Второе: Как конвертировать Unicod в Ansi (Windows) и обратно.
Приведите хотя бы простые примеры.
Отвечает: 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