Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.64 MB
Время: 0.058 c
14-86121
esu
2002-12-05 17:46
2002.12.26
Пришествие


6-86049
Alexec
2002-10-28 12:48
2002.12.26
Провайдер


8-86037
AlexSM
2002-09-09 08:40
2002.12.26
Изменение разиеров Bitmap


14-86078
Igor_thief
2002-11-10 21:33
2002.12.26
Excel


1-86002
dnkSoftWare
2002-12-16 11:08
2002.12.26
Хочу расширить панель components ....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский