Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2016, 12:33   #1
Vitamaster
 
Регистрация: 02.10.2012
Сообщений: 5
По умолчанию Chr и ansistring

Пишу программу для работы с устройством. Необходимо в устройство отправлять команды в шестнадцатеричном формате.
Если пишу так:

Var adr:ansistring;
......
adr:=#128;
....
отправка в порт
.....
то все нормально, в устройство приходит значение 80

Но если пишу так:

adr:=Chr(128);

то приходит значение 3F. При чем числа от 0 до 127 приходят правильно, а вот начиная с 128 начинается какая то ерунда.

Помогите разобраться, пожалуйста.

p.s. Пишу на Delphi xe2

Последний раз редактировалось Vitamaster; 22.07.2016 в 12:43.
Vitamaster вне форума Ответить с цитированием
Старый 22.07.2016, 12:44   #2
Gregor
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 208
По умолчанию

может лучше для отправки в порт использовать не строку а байтовый массив и заполнять его как то так
Buf[0] := $80;
Buf[1] := $81;
интенсивно гуглю прежде чем задать вопрос
Gregor вне форума Ответить с цитированием
Старый 22.07.2016, 12:52   #3
Vitamaster
 
Регистрация: 02.10.2012
Сообщений: 5
По умолчанию

Дело в том, что для отправки использую готовый компонент и используется вот такая команда:

nrComm1.SendData(PAnsiChar(adr),raz mer);

Но мне нужно, чтобы параметр adr был динамическим, то есть я не могу прописывать значения статически.
Vitamaster вне форума Ответить с цитированием
Старый 22.07.2016, 12:57   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
то есть я не могу прописывать значения статически.
То есть, ты не в курсе, что PAnsiChar - это указатель?
Метод SendData() может выдать любой кусок памяти.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 22.07.2016, 12:58   #5
Gregor
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 208
По умолчанию

Цитата:
Сообщение от Vitamaster Посмотреть сообщение
я не могу прописывать значения статически.
Опишите массив так TBuf = array[0..MAXWORD] of byte
а в вашей функции SendData вы как раз и указываете последним параметром сколько байт из этого буфера вы должны взять для отправки
интенсивно гуглю прежде чем задать вопрос
Gregor вне форума Ответить с цитированием
Старый 22.07.2016, 13:00   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

adr:=AnsiChar(128)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.07.2016, 13:04   #7
Vitamaster
 
Регистрация: 02.10.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
adr:=AnsiChar(128)
Спасибо!!!
Работает!
Vitamaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
delphi: chr(); java ??? Borec95 Общие вопросы по Java, Java SE, Kotlin 1 19.03.2012 21:41
Delphi: chr(); Java ???; Borec95 Помощь студентам 1 18.03.2012 23:19
Функция, подобная Chr Bagirli Общие вопросы Delphi 3 04.02.2012 21:38
Ошибка Unresolved external 'AVIA::AVIA(int, System::AnsiString, System::AnsiString, System::AnsiString, int) mexmexmex C++ Builder 3 27.12.2011 13:31
Функция Chr() Fantom Общие вопросы Delphi 4 12.05.2008 12:45