Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь в написании программы. Делфи + Ассамл, Несложно! 
V
    Опции темы
ZLOvar
Дата 22.12.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 4.6.2009
Где: Москва

Репутация: 1
Всего: 1



Итак, мне нужно с помощью делфи написать программу, которая показывает значение символов ASCII. Например вводишь в едит символ: "А" (латиница ,на необязательно), а она (прога) в ответ выдает сообщение с его шеснадцатеричным значением. Например:
1.Вводим: "G".
2.Нажимаем кнопку "Показать".
3.Выводится сообщение с чистым шеснадцатеричным значением "G". В данном случае это: "47".

Так вот, я прописал все, кроме самого главного! А именно этого способа вывода ASCII значения символа. Как это лучше сделать? Мож с помощью асма? Но просто я не знаю как это делать, ни с помощью асма, ни с помощью делфи)) Кто поможет? У кого какие предложения? Заранее всем ОГРОМНОЁ спасибо! smile 

Пробывал с Помощью функции Ord, не помогло. Мне нужно немного иное. 

Это сообщение отредактировал(а) ZLOvar - 22.12.2009, 21:38
--------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с)
PM MAIL WWW   Вверх
kami
Дата 22.12.2009, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



А чем Ord не устраивает? Чем оно не то?
Код

ShowMessage(IntToStr(Ord(Edit1.Text[1])));

PM MAIL WWW   Вверх
amsoft
Дата 22.12.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



Код

IntToHex(ord('G'),0)

--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
ZLOvar
Дата 22.12.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 4.6.2009
Где: Москва

Репутация: 1
Всего: 1



kami, 
Вводим "G" нажимаем кнопку, получаем: 71, а П в шестнадцатеричном виде не 71 а 47! Вот этим и не устраивает.
--------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с)
PM MAIL WWW   Вверх
Данкинг
Дата 22.12.2009, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(ZLOvar @  22.12.2009,  21:36 Найти цитируемый пост)
Пробывал с Помощью функции Ord, не помогло. Мне нужно немного иное. 

Не совсем понял, что надо. Ну вот же и выводится код символа:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
 showmessage(inttostr(ord('G')));
end;


Цитата(ZLOvar @  22.12.2009,  21:36 Найти цитируемый пост)
3.Выводится сообщение с чистым шеснадцатеричным значением "G". В данном случае это: "47".

Или именно в шестнадцатеричном виде надо? Тогда перекодируем:
Код

function Dec2X(const Value, Base: Cardinal): string;



// Функция возвращает символ, соответствующий числу в N-ричной системе

function GetChar(const N: Cardinal): Char;

begin

   if N < 10 then

     // для систем счисления от 1 до 10

     Result := Char(N + Ord('0'))

   else

     // для систем счисления выше 10, но не больше 36 ([0..9] + ['A'..'Z'])

     Result := Char(N - 10 + Ord('A'));

end;

 

var

V, R: Cardinal;

begin

Result := '';

 

if Base <= 1 then

begin

   // числа можно и в системе, состоящей из одного символа, представлять ;)

   if Base = 1 then

   begin

     // реализуем это

     SetLength(Result, Value);

     FillChar(Result[1], Value, Ord('0'));

     Exit;

   end else

     // а вот других систем счисления быть не может

     raise EConvertError.Create('Основание системы счисления должно быть больше 0');

end else

   // ограничиваем представление систем счисления 10-ю цифрами и 26-ю буквами

   // английского алфавита

   if Base > 10 + (Ord('Z') + 1) - Ord('A') then

     raise EConvertError.Create('Основание системы счисления должно лежать в пределах от 1 до 36');

 

// Выполняем преобразование в нужную систему виртуальным делением в столбик

V := Value;

repeat

   R := V mod Base;

   V := V div Base;

   Result := GetChar(R) + Result;

until V < 2; // 2 - минимальная база,

              // то есть в любом случае когда-то "V div Base" будет равно 1

if V <> 0 then Result := IntToStr(V) + Result;

end;
...

procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage(Dec2X(ord('G'),16));
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ZLOvar
Дата 22.12.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 4.6.2009
Где: Москва

Репутация: 1
Всего: 1



amsoft, 
О! то что надо .только можно ли его как нибудь прикрепить к Edit1.Text? Сам пробывал .не выходит. Пишет что различные типы.

Добавлено через 4 минуты
Данкинг, 
amsoft, 
Все просто прекрасно, но только мне нужно как нибудь привязать его к Edit1.Text. Ато он мне только один символ "G" в 16-ричной системе выдает.
--------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с)
PM MAIL WWW   Вверх
amsoft
Дата 22.12.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



Код

procedure TForm1.Button1Click(Sender: TObject);
var
X: integer;
S: string;
begin
S := '';
for X := 1 to Length(Edit1.Text) do
    S := S + IntToHex(Ord(Edit1.Text[X]),0) + ' ';
ShowMessage(S);
end;

--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
chip_and_dayl
Дата 22.12.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Код

Label1.Caption:=string(inttoHex(ord(Edit1.Text[1]),0));

Извиняюсь за извращение с переобразованиямиsmile

Добавлено через 1 минуту и 51 секунду
Данкинг
Пожалей мозги нам юзерам smile


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
ZLOvar
Дата 22.12.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 4.6.2009
Где: Москва

Репутация: 1
Всего: 1



amsoft, 
chip_and_dayl, 
Данкинг, 

Все пошло! smile  smile  smile  smile  Спасибо вам огромное, ребята! Модератор ,поставьте пожалуйста этим трем кул программистам плюсы)) +++
--------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с)
PM MAIL WWW   Вверх
chip_and_dayl
Дата 22.12.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



amsoft
Кажись это IntToHex(Ord(Edit1.Text[X]),0) нужно к стрингу привести


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
amsoft
Дата 22.12.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



chip_and_dayl, 
IntToHex выдает результат в "стрингах"  smile 

Это сообщение отредактировал(а) amsoft - 22.12.2009, 22:17
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
chip_and_dayl
Дата 22.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Точно, что-то я где-то ...


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 22.12.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



chip_and_dayl, это не моя функция, это я в DelphiWorld нашёл. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ZLOvar
  Дата 22.12.2009, 22:49 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 4.6.2009
Где: Москва

Репутация: 1
Всего: 1



Данкинг, 
chip_and_dayl, 
amsoft, 
Все равно всем спасибо. Все работает! За плюсы я вам ручаюсь! smile 

--------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.