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

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

Интересное поведение функции Length() [D7, XP]


Страницы:   1 2 3 4

pavel_guzhanov ©   (2006-11-15 12:01:00) 

В программе для определения пола человека использую такую вещь:
    i:=Length(MIDDL_NAME);
     s:=copy(MIDDL_NAME, i-1, 1);
     if uppercase(s)='А' then
       SEX:='Жен'
     else
       SEX:='Муж';

где MIDDL_NAME - отчество.  вроде все работает. Переменные i и s введены для контроля. Так вот, в какие-то дни этот код работает нормально, а в какие-то - s получается равным не последней букве MIDDL_NAME, а предпоследней. Тогда я меняю второй параметр функции copy с i-1 на i, и опять какое-то время все работает нормально. Но, в какой-то день s начинает принимать значение ''. Опять меняю i на i-1, и опять все работает. И так бесконечно. Программка написана только для меня, поэтому как-то справляюсь, но есть опасение, что такое же может возникнуть и в других программах. Подскажите, отчего такое происходит, и как с этим бороться?

ps если использовать MIDDl_NAME[length(MIDDL_NAME)] - та же картина.


Anatoly Podgoretsky   (2006-11-15 12:09:00) [61]

> pavel_guzhanov  (15.11.2006 12:01:00)  [0]

Странный алгоритм, по нему выходит, что тебе именно предпоследнея буква нужна, а пот почему ты иногда получаешь последнею не ясно, может когда длина равна 1


Jeer   (2006-11-15 12:08:00) [62]

Будь проще:

if Middle_Name[High(Middle_Name)] =..
else
..


Elen   (2006-11-15 12:07:00) [63]


> pavel_guzhanov

Может поможет сделать для строки IDDL_NAME фиксированный размер?


Elen   (2006-11-15 12:05:00) [64]


> s:=copy(MIDDL_NAME, i-1, 1);

А что s:=MIDDL_NAME[length(MIDDL_NAME)]уже не модно?


ProgRAMmer Dimonych   (2006-11-15 12:02:00) [65]

Гюк, наверное. Переставить пора...

Попробуй для разнообразия ANSIUpperCase и RightStr... Или это трубопаскакаль?


Страницы:   1 2 3 4

Наверх

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