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

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


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

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

Выпуск № 719
от 27.01.2007, 16:05

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


Вопрос № 71978: здрасти вам!!! вот такой вопросик хочу написать прогу с использованием ручного сканера штрих кодов! что бы снимая штрих код выполнялось! ну не важно какое нибудь действие!!! у кого есть какая инфа скиньте будьте любезны!!!...
Вопрос № 72047: Уважаемые эксперты, скажите, как можно реализовать в программе нажатие клавиши Delete. Заранее благодарен....
Вопрос № 72056: Добрый день, уважаемые эксперты Помогите разобраться с багом. Создал dll, подключаю ее к приложению работает все нормально, только при выгрузке выдает кучу ошибок типа "прочитан неверный адрес" и Runtime error 216. В dll использую ...
Вопрос № 72066: как узнать путь к системной директории Windows (C:\WINDOWS\system32\) без копания в реестре Буду признателен за пример...
Вопрос № 72079: Добрый день Вопрос таков: есть dll, которая работает с COM-портом, а в ней метод Connect который подключается к порту. если библиотека привязана статически к приложению, подключение происходит нормально. а когда динамически пытаюсь подключит...
Вопрос № 72094: Доброго времени суток. Скажите, как можно сделать в программе переход в Word'е на несколько символов вперёд или назад от курсора. Заранее благодарен....

Вопрос № 71.978
здрасти вам!!! вот такой вопросик хочу написать прогу с использованием ручного сканера штрих кодов! что бы снимая штрих код выполнялось! ну не важно какое нибудь действие!!!
у кого есть какая инфа скиньте будьте любезны!!!
Отправлен: 21.01.2007, 21:54
Вопрос задал: Shnuroid (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Volhit
Здравствуйте, Shnuroid!

Инфы нет. Могу поделиться своим опытом. Данные обычно передаются через ком-порт. Возвращается строка символов, которые распознал сканер. Проще некуда.
Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 24.01.2007, 12:50

Отвечает: Morgen_krsk
Здравствуйте, Shnuroid!
Инфы у меня уже не осталость, просто поделюсь опытом работы со сканером штрих-кода. Есть два вида сканеров: одни пишут данные в com-порт, другие ставятся как виртуальная клавиатура и пишут данные "от имени" клавиатуры.
Формат данных - набор символов, которые сканер распознает, плюс символ перевода строки (по умолчанию). Есть возможность программировать на сканере преамбулу и постамбулу.
Никакого предварительного сообщения, что далее пойдут данные со сканера нет. В случае с com-портом сканер при чтении кэширует в себе последовательность кодов (во внутренюю память) и при чтении данных через com-порт выдает их все одним потоком .. код, перевод строки, код, перевод строки и т.д. Пришите программу, которая открывает порт, раз в секунду читает данные из com-порта и парсит.
В случае с виртуальной клавиатурой, если находитесь на активном элементе, можно ничего не делать, только правильно обработать enter. Если же охота независимо от элемента обрабатывать, то я делал так: программировал на сканере преамбулу (какой-нибудь редко используемый символ), перехватывал все сообщения с клавиатуры и как встречал преамбулу, писал во внтуренний буфер, как встречал постамбулу (перевод строки), то выкидывал сообщение ...
Надеюсь, что мой опыт вам поможет.
Ответ отправил: Morgen_krsk (статус: 2-ой класс)
Ответ отправлен: 24.01.2007, 19:10
Оценка за ответ: 5
Комментарий оценки:
большое спасибо за ответ!!! я только начал кавырять эту тему ваша информация надеюсь мне очень пригодится в дальнейшим!!!


Вопрос № 72.047
Уважаемые эксперты, скажите, как можно реализовать в программе нажатие клавиши Delete. Заранее благодарен.
Отправлен: 22.01.2007, 10:09
Вопрос задал: Пастарнаков Роман (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Bob Johnson
Здравствуйте, Фёдоров, Иван, Сергеевич!
keybd_event (VK_DELETE, MapVirtualKey (VK_DELETE, 0), 0, 0);
keybd_event (VK_DELETE, MapVirtualKey (VK_DELETE, 0), KEYEVENTF_KEYUP, 0);
Ответ отправил: Bob Johnson (статус: Академик)
Россия, Калуга
WWW: Программирование
----
Ответ отправлен: 22.01.2007, 11:40
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное.

Отвечает: Volhit
Здравствуйте, Фёдоров, Иван, Сергеевич!
2 способа есть. 1-й - с помощью сообщений Windows (SendMessage)
2-й - с помощью функции SendInput WinAPI.

Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 24.01.2007, 12:03
Оценка за ответ: 4
Комментарий оценки:
Большое спасибо. Учту.


Вопрос № 72.056
Добрый день, уважаемые эксперты

Помогите разобраться с багом. Создал dll, подключаю ее к приложению работает все нормально, только при выгрузке выдает кучу ошибок типа "прочитан неверный адрес" и Runtime error 216. В dll использую WideString, OleVariant, несколько форм. ShareMem подключал, но не дает результата( что с ним что без него - картина одинаковая)
Отправлен: 22.01.2007, 11:25
Вопрос задал: Leshka (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Маренич Владимир
Здравствуйте, Leshka!

ShareMem должен быть объявлен первым в секции USES как в DLL так и в файле проекта, который его использует.
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 22.01.2007, 11:39
Оценка за ответ: 3
Комментарий оценки:
не помогло. при выгрузке все равно ошибка EInvalidPointerException


Вопрос № 72.066
как узнать путь к системной директории Windows (C:\WINDOWS\system32\) без копания в реестре
Буду признателен за пример
Отправлен: 22.01.2007, 12:14
Вопрос задал: source (статус: 1-ый класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 2)

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

var
Dir: String;
begin
setlength(Dir, MaxPath);
GetWindowsDirectory(PChar(Dir), MaxPath);
Dir := String(PChar(Dir));
...
end;
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 6-ой класс)
Ответ отправлен: 22.01.2007, 12:19

Отвечает: Rusland
Здравствуйте, source!
Есть функция GetSystemDirectory.
UINT GetSystemDirectory(
LPTSTR lpBuffer, // address of buffer for system directory
UINT uSize // size of directory buffer
);
Ответ отправил: Rusland (статус: Профессионал)
Россия, Казань
Адрес: Мой адрес не дом и не улица, мой адрес советский союз
WWW: Логотипы для сотовых телефонов
----
Ответ отправлен: 22.01.2007, 12:25

Отвечает: Mexes
Здравствуйте, source!
Поправлю предыдущий пост в том плане, что там получаем путь к папке Windows (она же WinNT), а для system32 надо использовать GetSystemDirectory:

{$APPTYPE CONSOLE}

uses Windows;

const MaxPath=65000;

var Dir: array [0..MaxPath] of char;
begin
GetSystemDirectory(Dir,MaxPath);
WriteLn(Dir);
ReadLn;
end.

У меня выдало c:Windowssystem32
Ответ отправил: Mexes (статус: 6-ой класс)
Ответ отправлен: 22.01.2007, 12:34

Отвечает: Shizuku Tsukishima
Здравствуйте, source!
Можно использовать вмсето прямых путей переменные среды. Например путь к system32 будет выглядеть так:

%windir%system32

Подробнее о переменных среды можно прочитать здесь: http://oszone.net/3673
Ответ отправила: Shizuku Tsukishima (статус: 3-ий класс)
Ответ отправлен: 22.01.2007, 12:36

Отвечает: Volhit
Здравствуйте, source!
Сегодня уже отвечал на похожий вопрос. Можно например так:
function GetHomePath: string;
var ps : PChar;
begin
Result := '';
ps := AllocMem(256);
If GetEnvironmentVariable('SystemRoot', ps, 256) > 0 then
Result := ps + 'system32';
// После использования освобождаем занятую память
FreeMem(ps);
end;
Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 24.01.2007, 10:57


Вопрос № 72.079
Добрый день

Вопрос таков: есть dll, которая работает с COM-портом, а в ней метод Connect который подключается к порту. если библиотека привязана статически к приложению, подключение происходит нормально. а когда динамически пытаюсь подключится говорит что порт недоступен. а хотелось бы подключать ее динамически. как быть?
Отправлен: 22.01.2007, 13:22
Вопрос задал: Leshka (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Volhit
Здравствуйте, Leshka!
А не могли бы вы привести код, как библиотеку динамически подключаете? Есть подозрение, что не совсем правильно. Как объявляете прототип функции Connect?
Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 24.01.2007, 10:39
Оценка за ответ: 5
Комментарий оценки:
Извините за беспокойство, я такой же начинающий и забыл указать в прототипе stdcall. Ваше предположение оправдалось


Вопрос № 72.094
Доброго времени суток. Скажите, как можно сделать в программе переход в Word'е на несколько символов вперёд или назад от курсора. Заранее благодарен.
Отправлен: 22.01.2007, 15:15
Вопрос задал: Пастарнаков Роман (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bob Johnson
Здравствуйте, Пастарнаков Роман Олегович!
сделать из своей программы, которая работает отдельно от ворда?
вариант 1 - послать ворду WM_KEYDOWN + WM_KEYUP на клавиши курсора (это вызовет его перемещение)
вариант 2 - работать с вордом через OLE. второй вариант предпочтительнее.
Ответ отправил: Bob Johnson (статус: Академик)
Россия, Калуга
WWW: Программирование
----
Ответ отправлен: 22.01.2007, 15:59
Оценка за ответ: 5
Комментарий оценки:
Спасибо за совет.


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

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

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

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

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


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


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

В избранное