![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция не работает, что в ней не так?
Bloody-Wolf © (2005-02-28 21:51:00)пытался написать функцию, каторая переводит Hex число в Dec,
вроде, все правильно написал, и дельфа не ругается, но если для проверки вводишь 0000, то в ответе, вместо 0, получаеш какую-то многозначную чушь, типа 12456214, что в ней не так, я уже битых 2 часа бьюсь, и ничего не получается:
function HexToDec(text:string):integer;
const
characters = 'abcdef';
var
contr,stepen,i,j,sum: integer;
begin
stepen:=12;
for i := 1 to 4 {length(text)} do
begin
contr:=0;
stepen:=1 shl stepen;
for j := 1 to 6 {length(characters)} do
begin
if text[i]=characters[j] then
begin
sum:=sum + (j+9)*stepen;
contr:=1;
end;
end;
if contr = 0 then
begin
sum:=sum + StrToInt(text[i])*stepen;
end;
stepen:=stepen-4;
end;
HexToDec:=sum;
end;
Bloody-Wolf (2005-02-28 22:07:00) [1]Ага, всем огромное спасибо, просто я видимо не внимательно читал ХЕЛП, еще раз спасибо
Bloody-Wolf (2005-02-28 22:06:00) [2]Begin...end, извините, я начинающий, в справке вроде сказано что если вводить число с префиксом $, то оно будет считаться Hex, это правда, или нет, и прокатит ли это.
DrPass (2005-02-28 22:05:00) [3]
> разве StrToInt будет работать, она ведь будет думать что
> ето десятичное число
Будет. Она считает число шестнадцатеричным, если оно начинается на символ $
begin...end (2005-02-28 22:03:00) [4]> Bloody-Wolf © (28.02.05 22:01) [3]
Вы ошибаетесь. Внимательно прочитайте справку по функции StrToInt.
Bloody-Wolf (2005-02-28 22:03:00) [5]А манипуляции со stepen, это степень 16, ну 16^0, 16^1, 16^2 и т.д
Bloody-Wolf (2005-02-28 22:01:00) [6]DrPass, не вы не поняли, мне надо с клавы вводить Hex число, разве StrToInt будет работать, она ведь будет думать что ето десятичное число
begin...end (2005-02-28 21:59:00) [7]> Bloody-Wolf © (28.02.05 21:51)
Честно говоря, не совсем понятны манипуляции с переменной stepen. А вообще - см. [1].
DrPass (2005-02-28 21:55:00) [8]Это у тебя задание такое - написать? Или ты просто не знаешь о библиотечной функции StrToInt?