![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
преобразование строки [D7]
Цукор5 © (2008-02-12 13:45:00)Есть строка 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;
Григорьев Антон (2008-02-12 14:46:00) [1]
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, но при желании это очень легко добавить.
ketmar (2008-02-12 14:03:00) [2]>[3] palva © (2008-02-12 13:56:00)
не выйдет. посмотри на формат — это ж у него unpacked BCD, да ещё и реверсный.
---
Understanding is not required. Only obedience.
palva (2008-02-12 13:56:00) [3]А если так?
Result := 0;
Move(hText[1], Result, 3);
ketmar (2008-02-12 13:55:00) [4]тьфу. долбанутый bbcode-сонвертер посжирал везде [ i ].
---
Understanding is not required. Only obedience.
ketmar (2008-02-12 13:54:00) [5]>IntToStr(Ord(hText ));
это зачем так? Char(ord(hText )+ord('0'));
>if not TryStrToInt(GoodText,Result) then
не проще ли проверить там же, где ord(hText )?
---
Understanding is not required. Only obedience.