![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интересное поведение функции Length() [D7, XP]
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)] - та же картина.
pavel_guzhanov (2006-11-17 11:19:00) [1]Спасибо всем, кто пытался помочь! Помогла Trim (не учел я, что заполняющие файл в экселе могут после отчества еще и пробел воткнуть :0)), и, естественно, AnsiUpperCase.
Спасибо!
Leonid Troyanovsky (2006-11-16 18:46:00) [2]
> RASkov (16.11.06 18:40) [63]
> Ух.. неужто все кончилось:)
Зря ты не регистрируешься.
Ну, ладно, ухожу-ухожу.
--
Regards, LVT.
RASkov (2006-11-16 18:40:00) [3]Ух.. неужто все кончилось:)
> [62] Amoeba © (16.11.06 18:23)
Бывает:) Непереживай.
Amoeba (2006-11-16 18:23:00) [4]
> RASkov (16.11.06 18:20) [61]
> > [58] Amoeba © (16.11.06 15:39)
>
> Если, что - я вопросов здесь не задавал.
Нда, действительно... Перепутал. В таком случае прими мои извинения за наезд не по адресу.
RASkov (2006-11-16 18:20:00) [5]> [58] Amoeba © (16.11.06 15:39)
Если, что - я вопросов здесь не задавал.
> [59] Anatoly Podgoretsky © (16.11.06 16:15)
Я согласен с Вами и я как бы подвел итог вопроса автора. И тут Amoeba....
Ладно, как бы то нибыло здесь отвечать, кроме автору, больше не буду.
Anatoly Podgoretsky (2006-11-16 16:15:00) [6]> RASkov (16.11.2006 15:20:57) [57]
> Что же Вы сразу Trim то не сделали? А?
Никакого А, как только возникла подобная необходимость, а есть она или нет - автор то молчит, так сразу возник TRIM.
А как только возникла необходимость в преобразовании в Верхний регист, то надо было сразу указывать ANSI функцию, посколько про русский язык было известно сразу.
Так что не А, а О
Anatoly Podgoretsky (2006-11-16 16:15:00) [7]> Amoeba (16.11.2006 15:39:58) [58]
Не LOL, а провокация, потом очередное по счету оправдание за код.
Amoeba (2006-11-16 15:39:00) [8]
> Я не понял, че вы ко мне привязались?:)))
Зачем нужно было демонстрировать в своем вопросе заведомо некорректный код, тем более, что Вы с самого начала знали (судя по Вашей реакции), в чем его некорректность (UpperCase а не AnsiUpperCase)?
Поэтому и LOL.
RASkov (2006-11-16 15:20:00) [9]
> [48] Amoeba © (16.11.06 15:09)
> Так что, прежде чем анализировать строку, для начала надо
> ей Trim сделать.
Тоже самое и Вам скажу - Что же Вы сразу Trim то не сделали? А?
:)))
RASkov (2006-11-16 15:14:00) [10]> Если знаешь, то какого черта сам на заменил в коде UpperCase
Я не понял, че вы ко мне привязались?:)))
В каком коде, я по Вашему должен был чего-то заменить?:)))
Это у меня LOL.
Amoeba (2006-11-16 15:09:00) [11]
> RASkov (16.11.06 14:20) [54]
> > [52] Amoeba © (16.11.06 11:41)
>
> А нафик мне это было говорить?
> :)
> > и еще ноешь, что "И еще UpperCase не работает с русскими
>
> > символами"?
>
> Я не ною, а указал на факт.
LOL!
RASkov (2006-11-16 14:20:00) [12]> [52] Amoeba © (16.11.06 11:41)
А нафик мне это было говорить?
:)
> и еще ноешь, что "И еще UpperCase не работает с русскими
> символами"?
Я не ною, а указал на факт.
Mikhail V (2006-11-16 11:48:00) [13]Автор, тебе библиотечку кинуть для подобного "рода" деятельности?
Amoeba (2006-11-16 11:41:00) [14]
> RASkov (15.11.06 19:53) [51]
> > [50] Андрей Сенченко © (15.11.06 19:51)
>
> Это я знаю.
> Но в примерах то здесь везде UpperCase
Если знаешь, то какого черта сам на заменил в коде UpperCase на AnsiUpperCase (религия не позволяет?!) и еще ноешь, что " И еще UpperCase не работает с русскими символами"?
RASkov (2006-11-15 19:53:00) [15]> [50] Андрей Сенченко © (15.11.06 19:51)
Это я знаю.
Но в примерах то здесь везде UpperCase
Андрей Сенченко (2006-11-15 19:51:00) [16]RASkov
И еще UpperCase не работает с русскими символами,
С ними работает AnsiUpperCase
RASkov (2006-11-15 18:24:00) [17]> MIDDL_NAME := Trim(MIDDL_NAME);
[17] Возможно пробел имеет место быть.
И еще UpperCase не работает с русскими символами, покрайней мере у меня так
ShowMessage(UpperCase('а')); показывает - а //символ "а" русский
у меня D7 WinXP SP2 Rus
Amoeba (2006-11-15 17:56:00) [18]
> Anatoly Podgoretsky © (15.11.06 13:37) [41]
> > pavel_guzhanov (15.11.2006 13:25:37) [37]
>
> А оканчивающее на пробел можешь представить?
А ведь такое запосто может быть... Так что, прежде чем анализировать строку, для начала надо ей Trim сделать. IMHO вещь в данном случае очевидная (может здесь одни из граблей и лежат?).
Игорь Шевченко (2006-11-15 15:27:00) [19]KilkennyCat © (15.11.06 13:51) [45]
В смысле нет данных
Jeer (2006-11-15 14:14:00) [20]
> KilkennyCat © (15.11.06 13:40) [42]
Чтобы ты сказал о таких ценниках ?
"Блазгогупцы"
"Мужской дуфля"
"Гаструлка"
и тп.