Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.26;
Скачать: CL | DM;

Вниз

Объявление двоичных констант   Найти похожие ветки 

 
Ops   (2002-12-16 15:29) [0]

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


 
Anatoly Podgoretsky ©   (2002-12-16 15:31) [1]

А шестнадцатиричные не проходят по регигии?


 
Calm ©   (2002-12-16 15:32) [2]

А почему это, интересно, должно проходить?

Вот если бы было что-то вроде
const c:integer=10
...
begin
c:=20;



 
Calm ©   (2002-12-16 15:33) [3]

Ой, я совсем не в тему.
Невнимателен я сегодня :((


 
Calm ©   (2002-12-16 15:34) [4]

У меня, кстати, такой код вполне проходит


 
Ops   (2002-12-16 15:39) [5]

Это инициализация для ком порта
и нужно смотреть по битикам...
const b = 1111111111110011b;
c = 1111111111101111b;
c1= 0000000000100000b;
d = 1111110011111111b;
e = 1110111111111111b;
e1= 0010000000000000b;
var ct: TCommTimeouts;
dcb: TDCB;
begin
f := Windows.CreateFile(PChar(Port), GENERIC_READ or
GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if (f < 0) or not Windows.SetupComm(f, 2048, 2048)or not
Windows.GetCommState(f, dcb) then exit; //init error
GetCommState(f, dcb);
dcb.Flags := dcb.Flags and b ; // OutXCtsFlow
dcb.Flags := (dcb.Flags and c) or c1;
dcb.Flags := dcb.Flags and d;
dcb.Flags := (dcb.Flags and e) or e1;

Компиляция неделю назад ПРОХОДИЛА... Враги ГДЕ-ТО изменили настройки!!! Помогите...


 
Reindeer Moss Eater   (2002-12-16 15:47) [6]

Нету двоичных констант в Object Pascal!


 
Calm ©   (2002-12-16 15:51) [7]


> Reindeer Moss Eater (16.12.02 15:47)
> Нету двоичных констант в Object Pascal!

Да как нет? Я только что у себя проверил - компилит.


 
Anatoly Podgoretsky ©   (2002-12-16 15:57) [8]

Может в 7 появились, но сомневаюсь, ассемблерные вставки не рассматриваю

Ops (16.12.02 15:39)
1.
const b = $FFF3 // 1111111111110011b;

2.
const b1111111111110011 = $FFF3


 
Ops   (2002-12-16 15:58) [9]

Может можно поставить принудительно опции компилятора и какие?


 
Ops   (2002-12-16 16:04) [10]

Не - перевести в шестнадцатиричный это запросто...
Просто надо менять битики часто- с другой стороны стоит палм на коме - там часто меняют (пока) настройки кома...
Обидно что РАНЬШЕ 100% компилялась!!!


 
Reindeer Moss Eater   (2002-12-16 16:07) [11]

By default, numeric constants use decimal notation, but the built-in assembler also supports binary, octal, and hexadecimal.


 
Calm ©   (2002-12-16 16:09) [12]


> 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 нельзя делать?


 
Zz_   (2002-12-16 16:12) [13]

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


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

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


 
Calm ©   (2002-12-16 16:17) [15]


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

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


 
Ops   (2002-12-16 16:20) [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.


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

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

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


 
Ops   (2002-12-16 16:39) [18]

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


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

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


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

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


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

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


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

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


 
Anatoly Podgoretsky ©   (2002-12-16 17:11) [23]

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


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

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


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

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

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







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

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


 
Digitman ©   (2002-12-16 17:34) [27]


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


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

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

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

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


 
han_malign ©   (2002-12-16 18:25) [28]

> Менять часто это так - приходит палмовед и говорит нука меняй битики с 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.


 
han_malign ©   (2002-12-16 18:27) [29]

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


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

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


 
Fantasist ©   (2002-12-16 19:50) [31]


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


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



Страницы: 1 вся ветка

Текущий архив: 2002.12.26;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.019 c
1-85889
Шурик Ш
2002-12-16 11:13
2002.12.26
Подскажите событие


8-86042
none
2002-09-01 16:08
2002.12.26
DirectX


3-85839
krammer
2002-12-06 20:55
2002.12.26
Почему фильтр


8-86044
Sam Stone
2002-09-10 08:31
2002.12.26
Иконки


3-85785
XM-AD
2002-12-05 15:57
2002.12.26
И снова Firebird, dialect 3 - не хочет создавать функцию