Новые книги

Представьте: вы садитесь в машину, берете в руки книгу и отправляетесь в путь. Вам не нужно управлять машиной – она управляет собой сама. Вам даже не нужно говорить ей, куда ехать, потому что она уже сверилась с вашим ежедневником, а он, в свою очередь, сам себя заполнил, проверив вашу почту и электронный план тренировок. Автомобиль везет вас не в магазин, потому что дроны уже доставили продукты в ваш холодильник, который еще на прошлой неделе сам отправил заявку в интернет-магазин), и не на работу (необходимость в офисе давно отпала), а, скажем, в оперу. Такой мир предлагает нам Интернет вещей.

Кажется, что это фантастика, однако все необходимые технологии уже существуют и выходят в серийное производство. Это значит, что идиллическая реальность Интернета вещей – вопрос самого ближайшего будущего. И у этого будущего есть обратная сторона: волна компьютерных преступлений, кибертерроризма и сетевого оружия, тотальная слежка и утрата контроля над собственной жизнью и окружающим миром.

Сэмюэл Грингард предлагает, не откладывая, отправиться в будущее и поразмыслить над важными вопросами, ответы на которые нам вскоре будут буквально жизненно необходимы.
Быстрота реакции – это то, что определяет успех продаж и переговоров. При разговоре (как телефонном, так и очном) зачастую нет и пары секунд, чтобы подумать и сформулировать взвешенный ответ. Главным оружием в такой ситуации является владение обширным арсеналом готовых ответов на любую реплику со стороны контрагента. Эта книга – кладезь самых успешных, продуманных и опробованных в жестких условиях реальных продаж речевых модулей, которые позволяют разрабатывать сценарии продаж, подходящие именно вашей переговорной ситуации. Если вместо избитых и совершенно неэффективных ответов на возражения клиента вы хотите получить реально работающие фразы, эта книга для вас!

Как проверять корректность доступа к базе данных?


Как проверять корректность доступа к базе данных?

Следующая функция проверяет доступ к базе данных и выдает возможные причины, если доступ не удается осуществить. Функция возвращает значение True в случае успешной операции и False в противном случае.

function TBDEDirect.CheckDatabase: Boolean;
var
  DS: TDataSource;
begin
  Result := False;
  DS := GetDataSource;
  if DS = nil then
    begin
      MessageDlg('Не установлена связь с элементом-источником данных.'+
        'Проверьте установку свойства DataSource.',
        mtError, [mbOK], 0);
      Exit;
    end;
  if DS.DataSet = nil then
    begin
      MessageDlg('Доступ к базе данных невозможен.', mtError,
        [mbOK], 0);
      Exit;
    end;
  if TDBDataSet(DS.DataSet).Database = nil then
    begin
      MessageDlg('Доступ к базе данных невозможен.', mtError,
        [mbOK], 0);
      Exit;
    end;
  if TDBDataSet(DS.DataSet).Database.Handle = nil then
    begin
      MessageDlg('Дескриптор (Handle) БД недоступен.', mtError,
        [mbOK], 0);
      Exit;
    end;
  if DS.DataSet.Handle = nil then
    begin
      MessageDlg('Дескриптор курсора (Cursor-Handle) недоступен.', mtError,
        [mbOK], 0);
      Exit;
    end;
  Result := True;
end;


Оглавление