Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-68724
jgu
2002-10-10 23:51
2002.10.21
длинна String


3-68622
Link
2002-09-28 08:13
2002.10.21
переход к записе


8-68883
eviruswork
2002-06-23 14:37
2002.10.21
BMP -> JPG


4-69066
zxas
2002-09-02 14:01
2002.10.21
Процессы


7-69040
Maxim Zemskov
2002-08-08 21:48
2002.10.21
Модем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский