Текущий архив: 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.51 MB
Время: 0.007 c