Пустите в ход или удвойте специальное значение

java.awt.Robot класс может быть использован для аутентификации

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;

login() throws Exception {
    // Pass username
    autoType(username);
    // to move to Password field
    autoTab();
    // Enter Password
    autoType(password);
    // To click on login
    autoSubmit();
}

private static void autoType(String string) throws AWTException {
    Robot robot = new Robot();
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection stringSelection = new StringSelection(string);
    clipboard.setContents(stringSelection, null);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
}

private static void autoTab() throws AWTException {
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);
}

private static void autoSubmit() throws AWTException {
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
}

5
задан 3 revs, 2 users 71% 9 May 2012 в 17:11
поделиться

4 ответа

В Visual C++ существует нестандартное _isnan(double) функция, которую можно импортировать через float.h.

В C существует a isnan(double) функция, которую можно импортировать через math.h.

В C++ существует isnan (дважды) функционируют, который можно импортировать через cmath.

Как другие указали, использование NaN может быть большим количеством стычки. Они - особый случай, с которым нужно иметь дело с подобными Нулевыми указателями. Различие - то, что NaN не будет обычно вызывать дампы ядра и отказы приложения, но их чрезвычайно трудно разыскать. Если Вы решаете использовать NaN, используйте их как можно меньше. Злоупотребление NaN является наступательной практикой кодирования.

6
ответ дан 18 December 2019 в 10:49
поделиться

Мы сделали это при помощи NaN:

double d = std::numeric_limits<double>::signaling_NaN();
bool isNaN = (d != d);

Значения NaN, сравненные для равенства с собой, приведут ко лжи. Это - способ, которым Вы тестируете на NaN, но который, кажется, только допустим если std::numeric_limits<double>::is_iec559 верно (если так, это соответствует ieee754 также).

В C99 существует названный макрос isnan для этого в math.h, который проверяет число с плавающей точкой на значение NaN также.

7
ответ дан 18 December 2019 в 10:49
поделиться

Одна опция была бы оберткой, которая имеет рекламу плавающую булевская переменная, но это не может работать, поскольку мои библиотеки имеют контейнеры, которые хранилище удваивает и не объекты, которые ведут себя, как удваивается.

Это - позор. В C++ это тривиально для создания шаблонного класса, который автопреобразовывает в фактический двойной (ссылочный) атрибут. (Или ссылка на любой другой тип в этом отношении.) Вы просто используете оператор броска в шаблонном классе. Например: оператор TYPE & () {возвращаемое значение;} можно затем использовать HasValue <дважды> где угодно, Вы обычно использовали бы двойное.

Другой использовал бы NaN (станд.:: numeric_limits). Но я не вижу способа проверить на переменную быть NaN.

Как litb и James Schek также отметил, C99 предоставляет нам isnan ().

Но будьте осторожны с этим! Значения NaN делают математику и логику реальными интересный! Вы думали бы, что число не могло быть оба НЕ> =foo и НЕ <=foo. Но с NaN, это может.

Существует причина, которую я сохраняю WARN-IF-NAN (X) макрос на моей панели инструментов. У меня были некоторые интересные проблемы, возникают в прошлом.

1
ответ дан 18 December 2019 в 10:49
поделиться

Это не встроенный тип, но я обычно использую boost::optional для такого рода вещи. Если бы Вы абсолютно не можете использовать это, возможно, указатель добился бы цели - если указатель является НУЛЕВЫМ, то Вы знаете, что результат не содержит допустимое значение.

2
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: