Форум: "Начинающим";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизКак преобразовать число потери нулей впереди Найти похожие ветки
← →
Русланка (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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c