Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кол-во символом в числе.


Цукор5 ©   (2007-08-07 22:54:00) 

Имеем 100 состоящее из 3 чисел.
Имеем 1000 соостоящее из 4 чисел.

Как определить кол-во символом(чисел) в некотором значении ?

Есть ли другой вариант, нежели мой ?
Caption:=IntToStr(Length(IntToStr(High(Integer))));


DevilDevil   (2007-08-08 14:49:00) [1]

Longword = DWORD = Cardinal

вообще сравнивается на равенство нулю.
тестирование на минус явно лишнее.


Dimaxx   (2007-08-08 13:09:00) [2]


> А чем [0] отличается от [1] ???

Тем, что в [0] всегда будет возвращаться одно и тоже число.


MetalFan   (2007-08-08 10:07:00) [3]


> Думкин ©   (08.08.07 07:15) [8]

ну да, ну да)
uses Math;
...
function GetFigureCount( ANumber: Longword ): Integer;
var
lInt: Integer;
begin
Result := 1;
if ANumber =0 then
  Exit
else
 ANumber := Abs( ANumber  );
Result := Trunc( Log10( ANumber ) ) + 1;
end;


Думкин   (2007-08-08 07:15:00) [4]

> if ANumber <=0 then Exit;

И что возвращаем? И у отрицательного числа нельзя посчитать число цифирь в записи? А если знак переобуть?


MetalFan   (2007-08-07 23:41:00) [5]


> Virgo_Style ©   (07.08.07 23:29) [5]

точно)))

uses Math;
...
function GetFigureCount( ANumber: Longword ): Integer;
var
 lInt: Integer;
begin
 Result := 1;
 if ANumber <=0 then Exit;
 Result := Trunc( Log10( ANumber ) ) + 1;
end;


MetalFan   (2007-08-07 23:38:00) [6]

есть)
function GetFigureCount( ANumber: Longword ): Integer;
const
 C_10POWER : array [1..10] of Longword = (  10, 100, 1000,
                                           10000,100000,1000000,
                                           10000000, 100000000, 1000000000,
                                           10000000000 );
var
 lInt: Integer;
begin
 for Result := Low(C_10POWER) to High(C_10POWER) do
 begin
   if ( ANumber div C_10POWER[Result] ) = 0 then
     Break;
 end;
end;

нечто такое. зато работать будет имхо быстрее...


Virgo_Style   (2007-08-07 23:29:00) [7]

для положительных - целая часть логарифма по основанию 10 плюс 1 ?


JanMihail   (2007-08-07 23:06:00) [8]

Все равно другого варианта на мой взгляд нету.


JanMihail   (2007-08-07 23:04:00) [9]


> А чем [0] отличается от [1] ???

в [1] нет High


Цукор5   (2007-08-07 23:01:00) [10]

2 JanMihail

Рассмешил ;) А чем [0] отличается от [1] ???


JanMihail   (2007-08-07 22:57:00) [11]

i: Integer;
col: Integer;
....
i := 123456433;
col := length(IntToStr(i));
ShowMessage(IntToStr(Col));


Разве сложно? Вполне нормально. А как ты хотел?


Наверх

Титульная страница Поиск, карта сайта Написать письмо