Автор Тема: [Баг] Забавный баг(?) при выводе в консоль в SciTE  (Прочитано 7429 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8075
  • Репутация: 2313
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Открываем SciTE, и запускаем (F5) такой скрипт:

Код: AutoIt [Выделить]
$sVal = StringToBinary("Hello!")

MsgBox(64, 'Title', $sVal)
ConsoleWrite(VarGetType($sVal) & ":" & $sVal & @CRLF)
ConsoleWrite($sVal)


в MsgBox всё выводится как надо (в бинарном виде), в первом ConsoleWrite тоже (обратите внимание на различия), а вот во втором выводится не в бинарном виде, а в оригинале :). Получается что если использовать переменную (и только её одну) содержащую строку в бинарном виде, то строка как бы конвертируется обратно. Стоит лишь добавить @CRLF после $sVal и будет отображать в бинарном виде, как и должно быть.

P.S
Прошу подтвердить :whistle:


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

[Баг] Забавный баг(?) при выводе в консоль в SciTE
« Отправлен: Ноябрь 05, 2009, 15:54:16 »

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
Подтверждаю  :beer:
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
И я подтверждаю. И правда забавно :D

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

Русское сообщество AutoIt

Re: [Баг] Забавный баг(?) при выводе в консоль в SciTE
« Ответ #2 Отправлен: Ноябрь 05, 2009, 17:01:55 »

Оффлайн SyDr [?]

  • Локальный модератор
  • *
  • Сообщений: 650
  • Репутация: 157
  • Пол: Мужской
  • Сидра
    • Награды
  • Версия AutoIt: 3.3.12.0
Ага, блин, забавный  :-X Всё из-за того, что только один тип данных. А если мне с 0x1237823534 надо работать исключительно, как со строкой? как мне объяснить AutoIt'у, что это строка, а не бинарное значение?

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
SyDr  [?]
Цитировать
как мне объяснить AutoIt'у, что это строка, а не бинарное значение?
Взять в кавычки? Запихнуть в String? :)

Русское сообщество AutoIt

Re: [Баг] Забавный баг(?) при выводе в консоль в SciTE
« Ответ #4 Отправлен: Ноябрь 05, 2009, 21:14:39 »

Оффлайн amel27 [?]

  • VIP
  • *
  • Сообщений: 146
  • Репутация: 55
  • Пол: Мужской
    • Награды
это не баг, а фича... и эта фича называется тип данных "Variant"

Код: AutoIt [Выделить]

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
А где интересно граница между багом и фичей?

:)

Код: AutoIt [Выделить]
$sVal = StringToBinary("Hello!")

ConsoleWrite(IsBinary($sVal) & @CR)
ConsoleWrite($sVal)
ConsoleWrite(' - ???' & @CR)



Думай, прежде чем говорить.

Оффлайн amel27 [?]

  • VIP
  • *
  • Сообщений: 146
  • Репутация: 55
  • Пол: Мужской
    • Награды
Оператор "&" преобразует бинарные данные по типу String(), ConsoleWrite - по типу BinaryToString()... Если поведение "&" еще можно оспаривать, то работа ConsoleWrite как раз никаких нареканий не вызывает, т.к. основное ее предназначение не SciTE, а консольные приложения... и алгоритм ConsoleWrite должен четко соответствовать ConsoleRead.

З.Ы. достаточно скомпилировать скрипт в консольный EXE, чтобы убедиться, что SciTE тут не причем

Русское сообщество AutoIt

Re: [Баг] Забавный баг(?) при выводе в консоль в SciTE
« Ответ #7 Отправлен: Ноябрь 06, 2009, 05:07:25 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Так вот на мой взгляд "&" должен делать ConsoleWrite() самостоятельно, а то логика нарушается.

Оффлайн amel27 [?]

  • VIP
  • *
  • Сообщений: 146
  • Репутация: 55
  • Пол: Мужской
    • Награды
"&" должен делать ConsoleWrite() самостоятельно

не понял - обе команды вынуждены сначала привести входные данные к типу "String", вот только каждая делает это по своему... таких команд в AutoIT много, все "нагружать" дополнительным выводом в консоль?

Код: AutoIt [Выделить]

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Логика в том, что если переменная - Binary, то я ожидаю при выводе в консоль увидеть ее двоичное представление, независимо от наличия или отсутствия символа "&". Если переменная имеет строковый тип - строку и т.д. Как, например, в реестре...

Код: AutoIt [Выделить]
$sStr = '0x'
For $i = 1 To 10
    $sStr &= Hex(Random(0, 255, 1), 2)
Next
$sVal = Binary($sStr)
ConsoleWrite(IsBinary($sVal) & @CR)
ConsoleWrite($sStr & @CR)
ConsoleWrite($sVal)
ConsoleWrite(' <= :(((' & @CR & $sVal & @CR)

« Последнее редактирование: Ноябрь 06, 2009, 11:40:22 от Yashied »

Оффлайн amel27 [?]

  • VIP
  • *
  • Сообщений: 146
  • Репутация: 55
  • Пол: Мужской
    • Награды
я ожидаю при выводе в консоль увидеть ее двоичное представление

а я ожидаю, что формат данных не изменится
;)

Код: AutoIt [Выделить]
While True
    $bin = ConsoleRead(False, True)
    If @error Then ExitLoop
    Sleep(25)
    ConsoleWrite($bin)
WEnd
 


Русское сообщество AutoIt

Re: [Баг] Забавный баг(?) при выводе в консоль в SciTE
« Ответ #11 Отправлен: Ноябрь 06, 2009, 12:35:10 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
7624 Просмотров
Последний ответ Май 03, 2015, 10:22:39
от Yashied
1 Ответов
1504 Просмотров
Последний ответ Май 13, 2015, 21:09:42
от Yashied
0 Ответов
892 Просмотров
Последний ответ Май 17, 2015, 13:07:45
от Tapok
1 Ответов
6166 Просмотров
Последний ответ Июнь 18, 2015, 11:12:32
от Yashied
35 Ответов
23978 Просмотров
Последний ответ Июль 08, 2017, 16:46:59
от Andrey_A
4 Ответов
5417 Просмотров
Последний ответ Февраль 23, 2017, 00:53:16
от Alofa
3 Ответов
821 Просмотров
Последний ответ Сентябрь 28, 2017, 11:54:18
от Крепыш
10 Ответов
427 Просмотров
Последний ответ Март 24, 2019, 12:54:13
от CreatoR
1 Ответов
767 Просмотров
Последний ответ Апрель 03, 2019, 00:15:01
от CreatoR