Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Объявление двоичных констант [D6]


Страницы:   1 2

Ops ©   (2002-12-16 15:29:00) 

const b = 1111111111110011b;
c = 1111111111101111b;
НЕПРОХОДИТ...


Fantasist   (2002-12-16 19:50:00) [1]


> i<=Length(aStr) и inc(i) в цикле забыл (как всегда)


Угу, поэтому for-цикл предпочтительнее: более наглядно и часто более быстро.


Ops   (2002-12-16 18:32:00) [2]

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


han_malign   (2002-12-16 18:27:00) [3]

i <=Length(aStr) и inc(i) в цикле забыл (как всегда)


han_malign   (2002-12-16 18:25:00) [4]

> Менять часто это так - приходит палмовед и говорит нука меняй битики с xxxxxx0xxx на xxxxxx1xxx.
- если уж ломает делать как все нормальные люди - завести набор констант представляющих каждый бит и собирать значение через or- можешь, для наглядности, сделать так(все равно значение один раз вычисляется):

const _sb="01001010110010101";
const b: DWORD=0;

function s2b(const aStr : string): DWORD;
var i: integer;
begin
Result:=0;
i:=1;while(i<Length(aStr))do begin
Result:=(Result shl 1);
if(aStr[i]="1")then Result:=Result or 1;
end;
end;
....................
initialization
b:=s2b(_sb);
end.


Digitman   (2002-12-16 17:34:00) [5]


> Ops (16.12.02 16:39)
> Что скажите на поводу ДОКИ - или там что-то не то написано???


Там-то как раз написано) .. только ты видать не читаешь доку)

>>the built-in assembler also supports binary,...

Ясно же написано : встроенный ассемблер также поддерживает декларации, представленные в дв.системе

Здесь имеется ввиду, что та версия компилятора, "доку" которой ты сподобился процитировать, поддерживает эту возможность ТОЛЬКО в блоках, содержащих Asm-текст


Anatoly Podgoretsky   (2002-12-16 17:26:00) [6]

Ops (16.12.02 17:18)
Плюс/минус 8, занимает не более времени, чем в двоичном виде


Reindeer Moss Eater   (2002-12-16 17:24:00) [7]

можно написать :
asm
shr eax,1001010b
и это будет компилироваться

можно написать:
const a = 1001010b;
но это никогда не будет компилироваться. Ни в одной из существующих версий Delphi с любыми опциями компилятора и любыми настройками.






Ops   (2002-12-16 17:18:00) [8]

1. Раньше все компилялось. Факт. !!! (почему сейчас не проходит непойму сам).
2. Менять часто это так - приходит палмовед и говорит нука меняй битики с xxxxxx0xxx на xxxxxx1xxx. Компилимся - проверяем прокачку и потери данных ;-)...


Anatoly Podgoretsky   (2002-12-16 17:11:00) [9]

Ops (16.12.02 16:04)
Как тогда это понимать
Просто надо менять битики часто-


Reindeer Moss Eater   (2002-12-16 17:05:00) [10]

Не компилится потому, что компилятор не поддерживает этого. Будем продолжать упорствовать?


Ops   (2002-12-16 17:02:00) [11]

Я эти константы и неменяю...
НО не компилится программа!!!
Я уже конечно переделал на шестнадцатеричные. Все равно непонятно!!!


Anatoly Podgoretsky   (2002-12-16 16:58:00) [12]

Ops (16.12.02 16:04)
Ты никак это не сможешь менять, это чистые константы


Reindeer Moss Eater   (2002-12-16 16:54:00) [13]

Там все правильно написано


Ops   (2002-12-16 16:39:00) [14]

Что скажите на поводу ДОКИ - или там что-то не то написано???


Reindeer Moss Eater   (2002-12-16 16:25:00) [15]

Обидно что РАНЬШЕ 100% компилялась!!!

Может надо просто сильнее жать на F9? :)))


Ops   (2002-12-16 16:20:00) [16]

Numeric constants

Numeric constants must be integers, and their values must be between –2,147,483,648 and 4,294,967,295.
By default, numeric constants use decimal notation, but the built-in assembler also supports binary, octal, and hexadecimal. Binary notation is selected by writing a B after the number, octal notation by writing an O after the number, and hexadecimal notation by writing an H after the number or a $ before the number.
Numeric constants must start with one of the digits 0 through 9 or the $ character. When you write a hexadecimal constant using the H suffix, an extra zero is required in front of the number if the first significant digit is one of the digits A through F. For example, 0BAD4H and $BAD4 are hexadecimal constants, but BAD4H is an identifier because it starts with a letter.


Calm   (2002-12-16 16:17:00) [17]


> только D отбрасывает на$иг букву b
> и считает это обычным десятичным числом.

А вот это я не проверял :(


Reindeer Moss Eater   (2002-12-16 16:13:00) [18]

>Calm ©
Я пытаюсь убедить, что нет в Object Pascal двоичных констант


Zz_   (2002-12-16 16:12:00) [19]

Ну да. У меня тоже компилится,
только D отбрасывает на$иг букву b
и считает это обычным десятичным числом.


Calm   (2002-12-16 16:09:00) [20]


> Reindeer Moss Eater (16.12.02 16:07)
> By default, numeric constants use decimal notation, but
> the built-in assembler also supports binary, octal, and
> hexadecimal.

Вы пытаетесь меня убедить, что как написал Ops нельзя делать?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо