мне нужно определить длину цисла в строке для этого я намутил такое
function razrad (c:string):integer;
var
i,e:integer;
begin
for i:=7 to 10 do begin
try
e:=strtoint(c[i]); //но она возврашается сюда, а потом опять в except
except
e:=0;
result:=(i-1);
exit; // сдесь по идеи функция должна вырубится
end;
end;
end;
получается зацикливание подскажите пожалуйста что не так
[Ответ]
fishca 13:09 23.07.2003
А не проще обрезать слева и справа лишние пробелы у аргумента функции и вернуть длину строки? И будет количество разрядов. Если число дробное или со знаком то, надо просто парсить строку и все [Ответ]
alladin 13:19 23.07.2003
Я бы с удовольствием но я не зняю что именно будет рядом с числом может быть и пробел и кирильца и латынь в обшем может быть чё угодно
[Ответ]
vicmb 13:36 23.07.2003
ну тогда парсь строку определяя ord символа. Если цифра, то накапливай и т.д.
[Ответ]
alladin 06:56 24.07.2003
убрал exit и ипользовал не возврат значения а удалял не числа а за циклом вернул и всё заработало
[Ответ]
zic 09:39 24.07.2003
использовать try except дурной стиль если не надо обрабатывать ошибку .
А условие употрблять в виде
c[i] in SetNumbers ,
где SetNumbers обьявлена как
SetNumber:set of 0...9;
[Ответ]
Только SetNumbers кроме объявления надо еще проинициализировать:
SetNumbers:=['0'..'9'] и не обязательно объявлять как SetNumbers: set of '0'..'9', можно как Set of char (если ты не ЮНИКОД юзишь)
[Ответ]
zic 16:15 29.07.2003
Cooch
Множества насчитывающие менее чем 32 базовых элемента могут обрабатываться и храниться в регистрах процессора , что способствует большей эффективности .Множества с 32 (или более) элементми ( например множество символов char из 255 элементов ) хранятся в памяти .
Поэтому для достижения максимальной скорости обработки целесообразно определять множества не более чем с 32 базовыми элементами .
zic
откуда такая информация?
вообще-то 32-разрядных регистров больше чем один, почему все не используются? Например, EAX и ECX использовать для 64 элементных множеств.
[Ответ]
zic 10:42 30.07.2003
Пачеко и Тейксейра , название не помню .
Что то вроде Разработка приложений на Delphi .
zic добавил [date]1059551314[/date]:
В двух томах .Интересно .
вообще-то 32-разрядных регистров больше чем один, почему все не используются? Например, EAX и ECX использовать для 64 элементных множеств.
Откуда мне знать не я же писал компилятор . Видимо на это есть свои причины .Хотя на сколько я помню это про Delphi 5 .
[Ответ]
Cooch 10:49 30.07.2003
Это книжка или что? Просто в первый раз про такое слышу (и про авторов и про множества).
[Ответ]
zic 10:58 30.07.2003
Книга .
Нашел полное название :
"Delphi5 ,Руководство разработчика "Стив Тейксейра и Ксавье Пачеко .
В двух томах .
В электронном виде и даже на русском можно легко найти в инете.
[Ответ]
Cooch 11:28 30.07.2003
О! Нашел эту книжку я просто авторов никогда не смотрел, у нас сейчас просто на работе чувак их под LCD-монитор подложил, чтобы он выше был, а то он видите ли низко. Они обе толстенные. Спасибо за инфу, давно хотел взять их почитать, вот Страуструпа дочитаю и возьму. [Ответ]
o---oOo---o 18:17 12.08.2003
function getlength(a: integer):integer;
var alength: integer;
begin
try
alength:=length(inttostr(a));
result:=length;
except
showmessage('Invalid value');
end;
end;
[Ответ]