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

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

преобразование строки [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.


Наверх

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