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

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


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

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

Выпуск № 669
от 04.12.2006, 00:35

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


Вопрос № 64526: Здравствуйте, уважаемые эксперты! Помогите, пожалуйста разораться с кодом(в прил.). Объясните, пожалуйста, что делает строчка OverWrite.hEvent := CreateEvent(nil, True, False, nil);? И для чего в if (not WriteFile(hPort, WriteBytes, SizeOf(Write...
Вопрос № 64585: Здравствуйте Уважаемые Мастера!!! У меня такой вопрос перечитал в пяти книгах по программированию все о работе с параметрами для компонентов Query и составление запросов с применение параметров. Но единой картины по работе так и не сложилось...
Вопрос № 64609: Ув. эксперты. Возник небольшой вопрос: моя программа лежит на сервере и мне надо знать как программно определить кто в данный момент запустил эту программу. Например чтоб в Лабеле выводилось - в данный момент программа запущенна компьютер...
Вопрос № 64663: В ЛВС офиса установлен сервер Firebird, БД и программа, которая с этой базой работает. Заказчик хочет иметь такую же БД и программу на своем ноутбуке. Ему нужно работать (в т.ч. вводить/изменять данные) в поездках. Вернувшись в офис он должен зап...

Вопрос № 64.526
Здравствуйте, уважаемые эксперты! Помогите, пожалуйста разораться с кодом(в прил.). Объясните, пожалуйста, что делает строчка OverWrite.hEvent := CreateEvent(nil, True, False, nil);? И для чего
в if (not WriteFile(hPort, WriteBytes, SizeOf(WriteBytes),
dwWrite, @OverWrite)) знак "@" перед OverWrite? И что за тип TOverlapped? Заранее очень благодарен!

Приложение:

Отправлен: 28.11.2006, 02:25
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Андрющенко Вячеслав Васильевич!
1. Судя по тому, что пишет нам хелп, функция CreateEvent() создает объект-событие.
Параметры:
lpEventAttributes: PSecurityAttributes - это указатель на специальную структуру, которая определяет права доступа. Если вместо нее указать NIL, то "заходи кто хочешь, бери что хочешь". :)
bManualReset - определяет нужна ли вручную проводить реинициализацию объекта. Если задать True, то нужно вызывать дополнительную функцию с помощью ResetEvent(Handle_объекта), если False, то Windows сама химичит.
bInitialState - если честно не понял что это такое. True - выдает при инициализации сигнал, False - не выдает.
lpName - ну это понятно - задание имени объекта. Если поставить NIL, то объект будет безымянный.
2. @ - означает, что в функцию в качестве параметра передается не значение переменной, а адрес в памяти, где она находится, аналогичен Паскалевскому var. Увеличивает скорость выполнения функции, т.к. не создается второй экземпляр переменной для работы в функции.
3. TOverlapped - это специальная структура в которой задается информация для правильной работы асинхронного ввода-вывода. В том числе и тот самый объект-событие, который выдает (или не выдает) тот самый таинственный сигнал, прежде чем заработает функция WriteFile(), т.к. WriteFile() тоже функция ввода вывода и может работать как в синхронном, так и в асинхронном режиме.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 28.11.2006, 04:45
Оценка за ответ: 5


Вопрос № 64.585
Здравствуйте Уважаемые Мастера!!!

У меня такой вопрос перечитал в пяти книгах по программированию все о работе с параметрами для компонентов Query и составление запросов с применение параметров. Но единой картины по работе так и не сложилось. В приложение привожу код примера по вставке записи в таблицу, значение берется из Edit1. Но появляется сообщение "Поле house.num_home не может содержать значение Null так как свойство Required имеет значение true. Введите значение в поле "

Прошу Вас не могли бы Вы систематизировать мои знания, и что я делаю неправильно. Как правильно должен выглядеть приведенный код.

Спасибо большое всем откликнувшимся

Приложение:

Отправлен: 28.11.2006, 13:16
Вопрос задал: Tresda (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: PaVeL_Ekt
Здравствуйте, Tresda!

Попробуйте вот так:
while ADOQuery1 do
SQL.Clear;
SQL.add('insert into house (num_house, address, raion) values (:num_home, :address, :raion)');
Parameters.ParamValues['num_home']:=edit1.text;
Parameters.ParamValues['address']:=edit2.text;
Parameters.ParamValues['raion']:=edit1.text;
open;
end;
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 6-ой класс)
Ответ отправлен: 28.11.2006, 13:41


Вопрос № 64.609
Ув. эксперты.
Возник небольшой вопрос:
моя программа лежит на сервере и мне надо знать как программно определить кто в данный момент запустил эту программу.
Например чтоб в Лабеле выводилось - в данный момент программа запущенна компьютером comp и было бы вообще просто супер если бы существовала еще и возможность вывести пользователя, который сейчас на этом компе залогинен, тоесть запускает програму(у нас домен).
Отправлен: 28.11.2006, 17:29
Вопрос задал: Master135 (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Master135!

Я бы посоветовал вам в случае если программа не СУБД, то написать клиент серверную версию вашей программы. Если это СУБД то проще регистрировать пользователей прямо в базе. там же и хранить имена, пароли и прочие данные о пользователе. Если правильно все это завязать то можно будет даже отследить какой пользователь с какой таблицей работает.
Удачи. И в следующий раз уточняйте хотя бы примерно, что делает ваша программа. Тогда легче отвечать будет
---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 3-ий класс)
Ответ отправлен: 29.11.2006, 05:54
Оценка за ответ: 3
Комментарий оценки:
Я разве что-то говорил про клиент-серверную технологию. Я просто сказал, что программа лежит на сервере, пользователь заходит на сервер и запускает программу.
А что она делает - абсолютно неважно. Никакой базы там нет.
Надо внимательнее читать вопрос.


Вопрос № 64.663
В ЛВС офиса установлен сервер Firebird, БД и программа, которая с этой базой работает.
Заказчик хочет иметь такую же БД и программу на своем ноутбуке. Ему нужно работать (в т.ч. вводить/изменять данные) в поездках. Вернувшись в офис он должен запустить некую программу-синхронизатор, которая в обеих базах приведет все записи в актуальное состояние. Критерий актуальности - время последнего обновления записи. Соответствующие поля в базе имеются.

Прошу совета у всех, кто решал подобные задачи, имеет идеи или ссылки. В частности, интересует организация работы программы одновременно с двумя базами, расположенными на разных машинах.
Спасибо.

Vitaly Grobshtein

Отправлен: 28.11.2006, 22:12
Вопрос задал: Vitaly (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Melamed
Здравствуйте, Vitaly!
Вам следует использовать модель briefcase.
Прочитать об этой модели можно в следующих статьях
http://www.rsdn.ru/article/db/briefcase1.xml и http://www.rsdn.ru/article/db/midas_briefcase.xml

Желаю удачи
Ответ отправил: Melamed (статус: 8-ой класс)
Ответ отправлен: 28.11.2006, 23:56
Оценка за ответ: 3
Комментарий оценки:
Описанная в статье технология предполагает, что мобильный пользователь работает не с БД, а с неким локальным кешем формата XML. Мне же нужно использовать на ноутбуке уже готовую программу и базу FirebBird.
Тем не менее, спасибо.

Отвечает: PaVeL_Ekt
Здравствуйте, Vitaly!

для синхронизации бд можно написать программу - сервер и программу клиент.
программа клиент выбирает записи из ноутбука начиная с первой и посылает запись в программу сервер, программа сервер получая данные проверяет их в бд офиса и если запись более новая то отправляет ответ с новой записью, в противном случае отправляет ответ о том, что данные новые и заносит их к себе в базу.

а реализоваться это будет посредствам idTCPclient и подобных, кстати можно воспользоваться NMMSG (даже наверно лучше им)
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 6-ой класс)
Ответ отправлен: 29.11.2006, 06:14
Оценка за ответ: 2
Комментарий оценки:
Я не просил рассказать о принципах репликации. Мне нужен совет по одновременной работе программы с двумя базами и двумя серверами Firebird.


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное