Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Внизпреобразование строки Найти похожие ветки
← →
Цукор5 (2008-02-12 13:45) [0]Есть строка Chr($05)+Chr($02)+Chr($09) необходимо преобразовать ее в число 925.
Сделал...но что-то не очень мне нравится. Тут есть головы светлые ;) может подскажите
function Decode(const hText:String):Integer;
var I:Integer;
GoodText:String;
begin
Result:=0;
GoodText:="";
for I:=Length(hText) downto 1 do
GoodText:=GoodText+IntToStr(Ord(hText[I]));
if not TryStrToInt(GoodText,Result) then
Result:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
var I:Integer;
begin
I:=Decode(Chr($05)+Chr($02)+Chr($09));
Memo1.Lines.Add(IntToStr(I));
end;
← →
ketmar © (2008-02-12 13:54) [1]>IntToStr(Ord(hText));
это зачем так? Char(ord(hText)+ord("0"));
>if not TryStrToInt(GoodText,Result) then
не проще ли проверить там же, где ord(hText)?
---
Understanding is not required. Only obedience.
← →
ketmar © (2008-02-12 13:55) [2]тьфу. долбанутый bbcode-сонвертер посжирал везде [ i ].
---
Understanding is not required. Only obedience.
← →
palva © (2008-02-12 13:56) [3]А если так?
Result := 0;
Move(hText[1], Result, 3);
← →
ketmar © (2008-02-12 14:03) [4]>[3] palva © (2008-02-12 13:56:00)
не выйдет. посмотри на формат — это ж у него unpacked BCD, да ещё и реверсный.
---
Understanding is not required. Only obedience.
← →
Григорьев Антон © (2008-02-12 14:46) [5]
function Decode(const hText: string): Integer;
var
I: Integer;
begin
Result := 0;
for I := Length(hText) downto 1 do
Result := 10 * Result + Ord(hText[i])
end;
В этом варианте, правда, отсутствует проверка того, что все символы строки попадают в диапазон #0..#9, но при желании это очень легко добавить.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c