Показать сообщение отдельно
  #3  
Старый 08.07.2010, 02:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Думаю:
Код
Код:
  while (Length(s)>0)and(s[1] in [#10,#13,#32,#9]) do Delete(s,1,1);
  while (Length(s)>0)and(s[Length(s)] in [#10,#13,#32,#9]) do Delete(s,Length(s),1);
можно заменить на:
Код:
for i := Length(s) DownTo 1 Do
  If Not (s[i] In ['0'..'9']) Then Delete(s,i,1);
По ощущениям должно быть быстрее и работать правильнее.
Тогда функция CharToDec примет вид:
Код:
function CharToDec (c: char): TDecimal;
begin
   Result:=ord(c)-48
end;
и ее можно сделать inline (или просто перенести код в место вызова), что еще убыстрит в конкретном месте.

И вообще, кому-то я тут писал код, который некоторое число конвертит в битовую строку и обратно. Кстати, даже с некоторой упаковкой по сравнению с твоим кодом. Правда, это была не честная конвертация, а для передачи данных в битовом образе.
Ответить с цитированием