Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 150
от 12.06.2005, 17:20

Администратор:Калашников О.А.
В номере:Вопросов: 2, Ответов: 9


Вопрос № 21856: Здравствуйте, эксперты! 1. Как в Delphi переводить шестнадцатеричное число в десятичное? 2. Если вам не трудно, приведите пример создания простого класса. Спасибо за ваши большие и ясные ответы!...
Вопрос № 21878: Добрый день уважаемые эксперты. Вот уже 3-ий день мучаюсь с одним вопросом по TreeView. На форме лежит TreeView, два TADOQUERY(для запроса групп и подгрупп), ADOConnection и DBGrid. Добавляю изначально к TreeView один уровень(корень)+фиктивную ветку....

Вопрос № 21.856
Здравствуйте, эксперты!
1. Как в Delphi переводить шестнадцатеричное число в десятичное?
2. Если вам не трудно, приведите пример создания простого класса.
Спасибо за ваши большие и ясные ответы!
Отправлен: 06.06.2005, 21:09
Вопрос задал: 3BEPEK (статус: 3-ий класс)
Всего ответов отправлено: 8

Отвечает: Denisss
Здравствуйте, 3BEPEK!
1. см. приложение 1
2. второй вопрос не совсем понятен, но если я верно понял, то см. приложение 2

Приложение:

Ответ отправил: Denisss (статус: 4-ый класс)
Отправлен: 06.06.2005, 21:37
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: nimoid
Здравствуйте, 3BEPEK!
1. Есть 2 варианта на твое усмотрение. См. приложение.
2. Не совсем понятен вопрос. Уточни плз.
p.s. Пользуйтесь поисковиком. А про классы, наверно, в любой книжке написано.

Приложение:

Ответ отправил: nimoid (статус: 2-ой класс)
Отправлен: 06.06.2005, 21:50

Отвечает: Pushkin
Здравствуйте, 3BEPEK!
Ниже привожу две функции для перевода чисел от 0 до 255 ( 00h-0FFh ). Их достаточно, чтобы разобраться. Если нужно, сделаешь для чисел любой разрядности:
{Из десятичной в шестнадцатиричную:}
function Dec2Hex(b: Byte): String;
var
r: String;
begin
r := '';
if b div 16 < 10 then r := r+Chr(b div 16 + 48) else
r := r+Chr(b div 16 + 55);
if (b - 16*(b div 16))<10 then r := r+Chr(b - 16*(b div 16) + 48) else
r := r+Chr(b - 16*(b div 16) + 55);
Dec2Hex := r;
end;
{Из шестнадцатиричной в десятичную:}
function Hex2Dec(h: String): Byte;
var
r: Byte;
begin
r := 0;
if (Ord(h[1])>=48) and (Ord(h[1])<=57) then r := (Ord(h[1])-48)*16 else
if (Ord(h[1])>=65) and (Ord(h[1])<=70) then r := (Ord(h[1])-55)*16;
if (Ord(h[2])>=48) and (Ord(h[2])<=57) then r := r+(Ord(h[2])-48) else
if (Ord(h[2])>=65) and (Ord(h[2])<=70) then r := r+(Ord(h[2])-55);
Hex2Dec := r;
end;
Ответ отправил: Pushkin (статус: 3-ий класс)
Отправлен: 06.06.2005, 22:39

Отвечает: Ерёмин Андрей
Здравствуйте, 3BEPEK!
В приложении две функции: для преобразования десятичного числа (Dec) в шестнадцатеричное (Hex) и наоборот. Для первой цели можно использовать стандартную функцию IntToHex, а вот для второй, кажется, стандартных функций не предусмотрено, но я могу и ошибаться. Во всяком случае, приведённые мною функции работают на 100%.

Приложение:

Ответ отправил: Ерёмин Андрей (статус: 6-ой класс)
Отправлен: 07.06.2005, 08:45

Отвечает: sir henry
Здравствуйте, 3BEPEK!
1. В приложении приведена функция из утилит к библиотеки KOL. Перевод из любой системы счисления в десятичную. Первый параметр строка-число, второй - система счисления.
2. Прсотой класс:
interface
TMyClass = class
private {Защищенная часть класса, невидимая снаружи. Используется только внутри класса}
Fpol11: integer;
Fpole2: string; {Это защищенные поля класса, невидимые снаружы}
public {А это видимая снаружи часть класса}
Procedure Proc1(s: string);
function Func1(k: byte): string;
properity Prop1 integer read Fpol1 write Fpol2; {Доступ к полю Fpol1}
properity Prop2 string read Func2 write Proc1; {А здесь мы имеем доступ к полю с помощью промежуточных функций}
End;
implementation
TMyClass.Proc1(s: string);
Begin
{Проводим промежуточную обработку строки}
Trim(s);
{Потом записываем результат в поле класса}
Fpole2:=s;
End;
TMyClass.Func1(k: byte): string;
Begin
{Функция для считывания значения поля}
Result:=Copy(Fpole2, 1, k);
End;

Приложение:

Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.06.2005, 10:04

Отвечает: streetcat
Здравствуйте, 3BEPEK!
1.А откуда брать HEX-число?
Все числа в Delphi можно задать в HEX а использовать их можно как DEC-числа.
например:
var
hexnum: integer = $FAFAFA;
begin
showmessage(inttostr(hexnum));
end;
будет выведено сообщение не $FAFAFA а 16448250 (десятичный эквивалент)
ну а если HEX хранится в строке и его нужно преобразовать в DEC число, то нужно пользоваться функцией strtoint(а_здесь_строка)
==================
2. Вот пример класса-собаки ;)
у него есть методы:
Bark; // Лаять
Sleep; // Спать
Eat; // Есть
Play; // Играть
и свойства:
Color: TColor; // цвет
Gender: TGender; // пол
Breed: TBreed; // порода
вот и делаем... как в приложении
вообще, купите себе какую-нибудь книгу по Delphi
за подробностями michael91@yandex.ru

Приложение:

---------
WinERROR: Keyboard not detected. Press Enter to continue

Ответ отправил: streetcat (статус: 6-ой класс)
Отправлен: 07.06.2005, 15:06

Отвечает: CJ
Здравствуйте, 3BEPEK!
1)Да никак, Дельфа сама его преобразует. Она понимает их как родные. :))) : Вот например. form1.Tag:= $0C;
Ответ отправил: CJ (статус: Студент)
Отправлен: 07.06.2005, 21:33

Отвечает: Мурник Роман
Здравствуйте, 3BEPEK!
Если своей функцией, то так:
function hextodec(he:string);
var h,l:integer;
begin
if he[1]='0' then h:=0
if he[1]='1' then h:=1
if he[1]='2' then h:=2
...
if he[1]='f' then h:=15
if he[2]='0' then l:=0
if he[2]='1' then l:=1
if he[2]='2' then l:=2
...
if he[2]='f' then l:=15
result:=h*16+l;
end;
Ответ отправил: Мурник Роман (статус: 1-ый класс)
Отправлен: 09.06.2005, 07:43


Вопрос № 21.878
Добрый день уважаемые эксперты. Вот уже 3-ий день мучаюсь с одним вопросом по TreeView. На форме лежит TreeView, два TADOQUERY(для запроса групп и подгрупп), ADOConnection и DBGrid. Добавляю изначально к TreeView один уровень(корень)+фиктивную ветку. При раскрытии уровня удаляю фиктивную ветку. Проверяю, если раскрыл корневой узел, то делаю запрос к базе и добавляю все записи из базы которые имеют признак группы = 1 и код группы = 0. К добавленной Ноде в параметр Data записываю код добавленной записи. Прежде чем перейти к следующей записи, делаю еще запрос на наличие подгрупп. Если кол-во групп больше 0, то добавляю фиктивную ветку к этой Ноде. Далеее перехожу к следующей записи. Все работает замечательно, но все Ноды у которых нет вложенных папок рисуются с +(плюсиком). Где я наступил на грабли? Не пойму. Взгляните свежим взглядом. Заранее благодарен. Александр.

Приложение:

Отправлен: 07.06.2005, 12:06
Вопрос задал: sb (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: sir henry
Здравствуйте, sb!
По-моему, это грабли микрософт, потому что в Регэдите и в Эксплорере случается такое-же. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.06.2005, 13:50


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное