Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

Как преобразовать число потери нулей впереди   Найти похожие ветки 

 
Русланка   (2005-08-11 13:32) [0]

Необходимо чтобы числа отображались в пятизначной форме
00001
00453

При преобразовании IntToStr незначащие нули спереди отбрасываются. Есть ли другая функция, чтобы не отбрасывала нули?


 
Digitman ©   (2005-08-11 13:35) [1]

решение "в лоб" :

FormatFloat("00000", StrToFloat(IntToStr(MyIntValue)));


 
Leonid Troyanovsky ©   (2005-08-11 13:51) [2]


> Русланка   (11.08.05 13:32)  

> Есть ли другая функция, чтобы не отбрасывала нули?


Format("%.5d", [453]);

--
Regards, LVT.


 
afanasic   (2005-08-11 14:15) [3]

st := IntToStr(x);
while Length(st) < 5 do
 st := "0"+st;


 
Leonid Troyanovsky ©   (2005-08-11 14:25) [4]


> afanasic   (11.08.05 14:15) [3]
> st := IntToStr(x);
> while Length(st) < 5 do
>  st := "0"+st;


Тогда уж RightStr("00000"+IntToStr(st), 5)

--
Regards, LVT.


 
Fay ©   (2005-08-11 14:32) [5]

2 Leonid Troyanovsky ©   (11.08.05 14:25) [4]
А если 123456789 ? 8)


 
Leonid Troyanovsky ©   (2005-08-11 14:36) [6]


> Fay ©   (11.08.05 14:32) [5]
> 2 Leonid Troyanovsky ©   (11.08.05 14:25) [4]
> А если 123456789 ? 8)


Вот такая у нас пятизначная форма.
Зато нули не отбрасывает.

--
Regards, LVT.


 
afanasic   (2005-08-11 16:30) [7]


> Leonid Troyanovsky

На пальцах, чтобы не задействовать лишние модули и неизвестные функции...
Можно усложнить с обрезанием:
st := Copy(IntToStr(x),1,5);
while Length(st) < 5 do
st := "0"+st;


 
Fay ©   (2005-08-11 16:37) [8]

2 afanasic   (11.08.05 16:30) [7]
Вы - маньяк?! Без конкатенации в цикле жить не можете?


 
afanasic   (2005-08-11 16:57) [9]

А если это запихнуть в функцию, а функцию в модуль SysUtils, тогда ей будут пользоваться?
Это первое, что приходит в голову, если не знаешь стандартных...
По крайней мере, какой вопрос, такой ответ...
Другой вариант:
st := "00000"+IntToStr(x);
st := Copy(st,Length(st)-4,5);


 
Alexander Panov ©   (2005-08-11 18:28) [10]

function PadL(const Src: String; Len: Integer; Ch: Char="0"): String; overload;
var
   LenSrc: Integer;
begin
   Result := Trim(Src);
   LenSrc := Length(Result);
   if LenSrc>Len then Exit;
   Result := StringOfChar(Ch,Len-LenSrc)+Result;
end;

function PadL(const Src: Integer; Len: Integer): String; overload;
begin
   Result := PadL(Src,Len);
end;


 
Leonid Troyanovsky ©   (2005-08-11 20:06) [11]


> Fay ©   (11.08.05 16:37) [8]
> 2 afanasic   (11.08.05 16:30) [7]
> Вы - маньяк?! Без конкатенации в цикле жить не можете?


На самом деле, не все так уж плохо.
Т.е., для строк память выделяется порциями,
ну, скажем, 8 байт (не помню).

--
Regards, LVT.


 
Fay ©   (2005-08-11 20:56) [12]

2 Leonid Troyanovsky ©   (11.08.05 20:06) [11]
Достаточно плохо. Разница в скорости - в разы.


 
Leonid Troyanovsky ©   (2005-08-11 21:07) [13]


> Fay ©   (11.08.05 20:56) [12]
> 2 Leonid Troyanovsky ©   (11.08.05 20:06) [11]
> Достаточно плохо. Разница в скорости - в разы.


 Это доказательно?

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-08-11 21:12) [14]


> Leonid Troyanovsky ©   (11.08.05 21:07) [13]

>  Это доказательно?


 Фу-ты. В смысле, доказуемо?

--
Regards, LVT.


 
Fay ©   (2005-08-11 21:26) [15]

2 Leonid Troyanovsky ©   (11.08.05 21:12) [14]
Конечно. Я сначала проверил. Можете тоже проверить 8).



Страницы: 1 вся ветка

Текущий архив: 2005.09.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.038 c
14-1124896995
lakk
2005-08-24 19:23
2005.09.18
траблы с монитором


1-1124909348
Ji
2005-08-24 22:49
2005.09.18
Не получается работать с UTF-8


2-1123573788
rolex
2005-08-09 11:49
2005.09.18
В событии Form1 onShow пишу Form2.ShowModal, но Form1 не показыва


3-1123565477
Shopot
2005-08-09 09:31
2005.09.18
ADO Query и SQL Server. Проблемы с памятью.


2-1123916363
Ксардас
2005-08-13 10:59
2005.09.18
Запарился совсем с РичЭдитом!