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

Вниз

преобразование строки   Найти похожие ветки 

 
Цукор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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1202719916
Kolan
2008-02-11 11:51
2008.03.09
Как узнать какие именно пакеты нужны приложению?


3-1192972241
diman315
2007-10-21 17:10
2008.03.09
Вытащить Data source из .udl


15-1201822679
tButton
2008-02-01 02:37
2008.03.09
DVD


4-1184658001
Artog
2007-07-17 11:40
2008.03.09
SetupDiGetDeviceInterfaceDetail - ошибка 1784


8-1175899050
777-56@mail.ru
2007-04-07 02:37
2008.03.09
Увеличение изображения на Canvas