Форум: "Основная";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
Вниз16-ричная запись Найти похожие ветки
← →
AndreyS (2002-10-07 18:40) [0]Как в Делфи записать число в 16-ричном ввиде. Есть библиотека dll на си куда надо
вставить в Переменную типа Word число в 16-ричной записи. Как сделать? И как
в dll указывают, что число следуеть получить в такой то записи. Или вообше
все не так, тогда как? У меня код конфигурации устройства в 16-ой записи.
Нужно передать его в библиотеку. В описании это тип Word. В десятичном
представлении не работает.
← →
Best Before 2024 (2002-10-07 18:44) [1]. В описании это тип Word. В десятичном
представлении не работает. ??
Этого не может быть! Само число остается числом независимо от формы записи, давайте кусок кода, как Вы делаете?
← →
TTCustomDelphiMaster (2002-10-07 18:53) [2]...
Dllproc($AABB);
...
и не забудте stdcall
← →
AndreyS (2002-10-07 18:55) [3]Если можно, то поскажите все-таки как в Дельфи пишется в 16-ричном виде (если это
вообще есть) А код то в некотором смысле и приводить не стоит.
Вот есть процедура SetChanalConfig(a, b) Оба типа Word Первый (а) устанавливает
номер канала осциллографической платы, а (b) конфигурацию множителя напряжения канала.
Вот в си примере Это так SetChanalConfig(1, 0x04). А во всех демках под
делфи только SetChanalConfig(1, 0) и есть (где 0x00 - только один множитель по напряжению=1).
В Си SetChanalConfig(1, 0x04) работает, а дельфи не работает ни
SetChanalConfig(1, 0x04) ни SetChanalConfig(1, 04) ни SetChanalConfig(1, 4) и вообще
никак.
← →
Best Before 2024 (2002-10-07 18:58) [4]так
SetChanalConfig(1, $4);
или
SetChanalConfig(1, 4);
и не забудте stdcall
← →
AndreyS (2002-10-07 19:04) [5]Спасибо- про stdcall я не забыл и в демке это так и стоит. Но вариант
SetChanalConfig(1, 4) у меня не заработал. А странно. А понимает ли Дельфи
действия например $1D*$7? И как записать в двоичном виде? (так для полной
ястности в этом вопросе подскажите)
← →
TTCustomDelphiMaster (2002-10-07 19:05) [6]Вообще то 4 и $4 равны. Читайте про stdcall.
← →
AndreyS (2002-10-07 19:13) [7]Так я про то и говорю что Страно ибо 4 и $4 действительно равны. Яж исходя из
этого и писал как выше. Но не работает. Чтож будем разбираться. Может Дельфи
старый (у меня четверка). А в хелпе написано, что stdcall вероятно будет модернизирована.
А все-таки как двоичная запись буде выглядеть. Какой префикс? А то ни в одной книжке по Делфи
ни гу гу у меня на этот счет не написано.
← →
TTCustomDelphiMaster (2002-10-07 19:19) [8]
> А все-таки как двоичная запись буде выглядеть
А оно Вам надо? Я тоже не встречал двоичной записи в Delphi.
Пример то точно рабочий? Возможно нет никакого первого канала. Что возвращает функция?Как Вы определяете что не работает?
← →
AndreyS (2002-10-07 19:30) [9]В виде SetChanalConfig(1, 0) все работает нормально. В си примере и с остальными
конфигурациями все нормально работает. Но в демках для Дельфи действительно
все странно. Пример один называется, что для разных конфигураций какнала демка,
а в реалии выставлена везде одна конфигурация. Ох не спроста наверное. Хотя по логике
должно все работать. Есть правда одно но. Пример в Си работает не через dll
а исходник в явном виде. Может меня просто надули. Тоесть для Си полнофунуциональный
вариант, а dll не полнофункциональная. Это могет быть (скорей всего так- судя по инфе от вас).
Завтра буду изучать исходник на Си. В общем кажется мои опасения верны и мне пихнули
не полнофункциональный dll и надо идти бить морду продавцу или
еще кому-нибудь ответсвенного за драйвера. Или из исходника на Си сделать нормальную
dll. В общем буду разбираться. Спасибо за помощь.
← →
TTCustomDelphiMaster (2002-10-07 19:36) [10]
> Это могет быть (скорей всего так- судя по инфе от вас).
На меня ссылаться не надо. Я ничего не знаю про Ваш осциллограф.
← →
Рыжик (2002-10-08 09:30) [11]
> TTCustomDelphiMaster © (07.10.02 19:19)
>
> > А все-таки как двоичная запись буде выглядеть
>
> А оно Вам надо? Я тоже не встречал двоичной записи в Delphi.
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.
← →
Рыжик (2002-10-08 09:31) [12]Дополнение:
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.
← →
TTCustomDelphiMaster (2002-10-08 17:38) [13]Рыжик © (08.10.02 09:31)
Было бы вообще великолепно, если бы такие конструкции были допустимы синтаксисом OP.
← →
Рыжик (2002-10-09 08:39) [14]А с чего это они не допустимы? Это цитата из Delphi-helpа. И у меня всё работает. Если у вас чего-то не допускается, то прочитайте внимательнее.
← →
TTCustomDelphiMaster (2002-10-09 16:59) [15]Но Вы же привели цитату из help для встроенного ассемблера, а у него свой синтаксис, отличный от синтаксиса Object Pascal. Я не поленился проверить, понимает ли OP такие конструкции, результат оказался предсказуемым:
procedure TForm1.Button1Click(Sender: TObject);
procedure ShM(i: integer);
begin
ShowMessage(inttostr(i));
end;
begin
ShM(999);
ShM($3E6);
//ShM(3E5H)); // ошибка при компиляции
//ShM(1744O); // ошибка при компиляции
//ShM(1111100011B); // ошибка при компиляции
asm
mov eax, 3E5H
call ShM
mov eax, 1744O
call ShM
mov eax, 1111100011B
call ShM
end;
end;
Когда я говорил о двоичной записи в Delphi, я имел ввиду синтаксис Object Pascal, а не Inline assembler, и соответственно использование двоичной записи без привлечения директивы asm. Я не очень хорошо знаю Delphi и может Вы подскажете как нужно работать с двоичными записями.
← →
han_malign (2002-10-09 17:15) [16]не факт что stdcall, возможно cdecl если DLL компилировалось под C и не было явно указанно что функции экспортируются как stdcall
← →
TTCustomDelphiMaster (2002-10-09 17:22) [17]Конечно не факт, но исходники у него то есть.
← →
han_malign (2002-10-09 17:28) [18]вот и надо посмотреть если в исходниках функции не экспортированны как stdcall, значит однозначно cdecl, я когда Lame MP3 encode DLL подключал на это напоролся, хотя смущает что в демке stdcall проставлен.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c