Старый 22.07.2003, 19:05   #1   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
нужна помощь delphi 6

мне нужно определить длину цисла в строке для этого я намутил такое

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;
получается зацикливание подскажите пожалуйста что не так
  Ответить с цитированием
Старый 23.07.2003, 13:09   #2   
Форумец
 
Аватар для fishca
 
Сообщений: 708
Регистрация: 23.12.2002
Возраст: 50
Записей в дневнике: 1

fishca вне форума Не в сети
А не проще обрезать слева и справа лишние пробелы у аргумента функции и вернуть длину строки? И будет количество разрядов. Если число дробное или со знаком то, надо просто парсить строку и все
  Ответить с цитированием
Старый 23.07.2003, 13:19   #3   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
Я бы с удовольствием но я не зняю что именно будет рядом с числом может быть и пробел и кирильца и латынь в обшем может быть чё угодно
  Ответить с цитированием
Старый 23.07.2003, 13:36   #4   
_
 
Сообщений: 495
Регистрация: 10.12.2002
Возраст: 44

vicmb вне форума Не в сети
ну тогда парсь строку определяя ord символа. Если цифра, то накапливай и т.д.
  Ответить с цитированием
Старый 24.07.2003, 06:56   #5   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
убрал exit и ипользовал не возврат значения а удалял не числа а за циклом вернул и всё заработало
  Ответить с цитированием
Старый 24.07.2003, 09:39   #6   
Форумец
 
Сообщений: 5,001
Регистрация: 08.04.2003
Возраст: 40

zic вне форума Не в сети
использовать try except дурной стиль если не надо обрабатывать ошибку .

А условие употрблять в виде
c[i] in SetNumbers ,
где SetNumbers обьявлена как
SetNumber:set of 0...9;
  Ответить с цитированием
Старый 24.07.2003, 11:09   #7   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
zic

спасибо не знал
  Ответить с цитированием
Старый 29.07.2003, 14:38   #8   
Floating
 
Аватар для Cooch
 
Сообщений: 616
Регистрация: 13.05.2003
Возраст: 39

Cooch вне форума Не в сети
Только SetNumbers кроме объявления надо еще проинициализировать:
SetNumbers:=['0'..'9'] и не обязательно объявлять как SetNumbers: set of '0'..'9', можно как Set of char (если ты не ЮНИКОД юзишь)
  Ответить с цитированием
Старый 29.07.2003, 16:15   #9   
Форумец
 
Сообщений: 5,001
Регистрация: 08.04.2003
Возраст: 40

zic вне форума Не в сети
Cooch
Множества насчитывающие менее чем 32 базовых элемента могут обрабатываться и храниться в регистрах процессора , что способствует большей эффективности .Множества с 32 (или более) элементми ( например множество символов char из 255 элементов ) хранятся в памяти .
Поэтому для достижения максимальной скорости обработки целесообразно определять множества не более чем с 32 базовыми элементами .

PS народная мудрость .
  Ответить с цитированием
Старый 30.07.2003, 08:45   #10   
Floating
 
Аватар для Cooch
 
Сообщений: 616
Регистрация: 13.05.2003
Возраст: 39

Cooch вне форума Не в сети
zic
откуда такая информация?
вообще-то 32-разрядных регистров больше чем один, почему все не используются? Например, EAX и ECX использовать для 64 элементных множеств.
  Ответить с цитированием
Старый 30.07.2003, 10:42   #11   
Форумец
 
Сообщений: 5,001
Регистрация: 08.04.2003
Возраст: 40

zic вне форума Не в сети
Пачеко и Тейксейра , название не помню .
Что то вроде Разработка приложений на Delphi .

zic добавил [date]1059551314[/date]:
В двух томах .Интересно .

вообще-то 32-разрядных регистров больше чем один, почему все не используются? Например, EAX и ECX использовать для 64 элементных множеств.
Откуда мне знать не я же писал компилятор . Видимо на это есть свои причины .Хотя на сколько я помню это про Delphi 5 .
  Ответить с цитированием
Старый 30.07.2003, 10:49   #12   
Floating
 
Аватар для Cooch
 
Сообщений: 616
Регистрация: 13.05.2003
Возраст: 39

Cooch вне форума Не в сети
Это книжка или что? Просто в первый раз про такое слышу (и про авторов и про множества).
  Ответить с цитированием
Старый 30.07.2003, 10:58   #13   
Форумец
 
Сообщений: 5,001
Регистрация: 08.04.2003
Возраст: 40

zic вне форума Не в сети
Книга .
Нашел полное название :
"Delphi5 ,Руководство разработчика "Стив Тейксейра и Ксавье Пачеко .
В двух томах .
В электронном виде и даже на русском можно легко найти в инете.
  Ответить с цитированием
Старый 30.07.2003, 11:28   #14   
Floating
 
Аватар для Cooch
 
Сообщений: 616
Регистрация: 13.05.2003
Возраст: 39

Cooch вне форума Не в сети
О! Нашел эту книжку я просто авторов никогда не смотрел, у нас сейчас просто на работе чувак их под LCD-монитор подложил, чтобы он выше был, а то он видите ли низко. Они обе толстенные. Спасибо за инфу, давно хотел взять их почитать, вот Страуструпа дочитаю и возьму.
  Ответить с цитированием
Старый 12.08.2003, 18:17   #15   
ninjagirl
 
Аватар для o---oOo---o
 
Сообщений: 27
Регистрация: 25.06.2003
Возраст: 43

o---oOo---o вне форума Не в сети
function getlength(a: integer):integer;
var alength: integer;
begin
try
alength:=length(inttostr(a));
result:=length;
except
showmessage('Invalid value');
end;
end;
  Ответить с цитированием
Поиск в теме: 


Опции темы

Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind