![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Вот, написал такой код
А выводит он сущую фигню. Помогите плиз найти ошибку -------------------- Обижено школьников: 8 |
|||
|
||||
| Coder |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
Я не разбирался с твоим кодом но САБЖ можно сделать так:
b - байт
в результате в al - младшие 4 байта, в ah - старшие можно и без ассемблера обойтись:
Это сообщение отредактировал(а) Coder - 30.5.2006, 04:06 |
||||
|
|||||
| Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
|
||||
|
|||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
Snowy, че-то ты намудрил.
надо так:
если во втором случае сразу применить shl и shr то ВСЕ биты вернуться на свои места и при этом старшие не обратятся в нули |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
-------------------- |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Угу. Заметил - при выполнении операций, байт превращается в 4, потому и не получается.
Но лечится легко:
|
|||
|
||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
Демо, не пому чем твой пример отличается от моего в первом ответе? в одну строку операторы and и shr не объединил что ли?
|
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Отличается именно этим. Пока досмотрел, про твой код и забыл. Тебя что, задевает? -------------------- |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Тогда так будет самый оптимальный способ:
|
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Только не нужно это делать литералами прямо в коде! Просто Delphi имеет глупую привычку заменять иногда при вычислении литералов shr на sar. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
негде сейчас посмотреть, sar это что? -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Спасибо, ребята, но это все и так понятно.
вот в этой моей строчке примерно то же самое и делаю char('a'+bytes[i] shr 4)+' '+char('a'+bytes[i] mod 240) но второй символ выходит за пределы латинского алфавита, а значить что bytes[i] mod 240 больше 16, чего быть не может. Может с этим absolute чего не так? или я уже не знаю... Взгляните плиз на мой код, там не так уж много...
Добавлено @ 10:25
-------------------- Обижено школьников: 8 |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
| ShadeSt |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 9.8.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 7 |
Может я чего то не понимаю, но
64 бита, это вроде всего 8мь байт (получается, что последние 8мь байт в массиве - "неопределены"??). а вот еще:
а с SYSTEMTIME все должно быть просто:
Это по поводу того, как можно получить время, потом с помощью Format привести к нужному виду и потом добавить в memo. Может так проще будет, или инересен сам алгоритм получения строки из FileTime? По поводу того, что выводит функция:
тут два символа и пять пробелов ( во втором случае их четыре), итого получится строка из 7*16=112 символов. что делает этот код для меня, честно говоря загадка. а как получить тетрады из байта, вроде уже написали. -------------------- It's nice to be importand, but it's more importand to be nice © Scooter |
||||||||
|
|||||||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |