Такая проблема. Даже и не проблема вовсе, а хочется посмотреть типовые решения. М.б. шаблоны проектирования есть какие на это счет.
Некоторый атрибут класса строкового типа задается пользователем. При этом в системе его значение сравнивается со значениями других атрибутов регистронезависимо. Естественным является желание для повышения быстродействия (при регистронезависимых сравнениях) привести все сравниваемые строки к одному регистру заранее, т.е. в момент установки значения атрибута приводить его, скажем, к верхнему регистру. Но при этом исходное значение теряется, а нужно его иметь (например, для выдачи диагностических сообщений — там регистр символов д.б. таким, как его задали).
Какие есть мысли по реализации этого дела ?
s.ts -> "регистронезависимое сравнение строк" :
s> Такая проблема. Даже и не проблема вовсе, а хочется посмотреть s> типовые решения. М.б. шаблоны проектирования есть какие на это счет. s> Некоторый атрибут класса строкового типа задается пользователем. При s> этом в системе его значение сравнивается со значениями других s> атрибутов регистронезависимо. Естественным является желание для s> повышения быстродействия (при регистронезависимых сравнениях) s> привести все сравниваемые строки к одному регистру заранее, т.е. в s> момент установки значения атрибута приводить его, скажем, к верхнему s> регистру. Но при этом исходное значение теряется, а нужно его иметь s> (например, для выдачи диагностических сообщений — там регистр s> символов д.б. таким, как его задали). s> Какие есть мысли по реализации этого дела ?
Эээээ... дублировать атрибуты, занося в приватные преобразоанные строки и
написать хитрый ацессор, который для операции сравнения будет поставлять
его?
Yury Kopyl aka hrg | http://id.totem.ru | "бысто сп..ил и ушел — называется
нашел..."
Hello, hrg!
h> Эээээ... дублировать атрибуты, занося в приватные преобразоанные строки h> и написать хитрый ацессор, который для операции сравнения будет h> поставлять его?
Вряд ли получится такой нарисовать. К тому же у меня не С++ (там еще м.б. был бы шанс )
s.ts -> "Re[2]: регистронезависимое сравнение строк" :
s> Hello, hrg!
h>> Эээээ... дублировать атрибуты, занося в приватные преобразоанные h>> строки и написать хитрый ацессор, который для операции сравнения h>> будет поставлять его?
s> Вряд ли получится такой нарисовать. К тому же у меня не С++ (там еще s> м.б. был бы шанс )
Хм... тогда может сделать дубляж атрибутов и реализовать метод
obj1.Compare(obj2), который будет сравнивать эти поля?
Здравствуйте, s.ts, Вы писали:
ST>Hello, All!
ST>Такая проблема. Даже и не проблема вовсе, а хочется посмотреть типовые решения. М.б. шаблоны проектирования есть какие на это счет. ST>Некоторый атрибут класса строкового типа задается пользователем. При этом в системе его значение сравнивается со значениями других атрибутов регистронезависимо. Естественным является желание для повышения быстродействия (при
Сделать регистронезависимость свойством операции сравнения ?
Добиться этого можно, например, сравнивая не сами символы, а значения некоторой функции от них, которая будет равной для 'A' и 'a'.
Hello, hrg!
You wrote on Fri, 10 Sep 2004 09:02:05 GMT:
h> s.ts -> "Re[2]: регистронезависимое сравнение строк" :
s>> Hello, hrg!
h>>> Эээээ... дублировать атрибуты, занося в приватные преобразоанные h>>> строки и написать хитрый ацессор, который для операции сравнения h>>> будет поставлять его?
s>> Вряд ли получится такой нарисовать. К тому же у меня не С++ (там еще s>> м.б. был бы шанс )
h> Хм... тогда может сделать дубляж атрибутов и реализовать метод h> obj1.Compare(obj2), который будет сравнивать эти поля?
h> Yury Kopyl aka hrg | http://id.totem.ru | "мы не пьем — мы лечимся..."
Ну да. Что-то типа того и выходит. Думал, может можно получше. Если делать на языке где операторы переопределяются и существуют статические объекты, то можно было бы что-то типа DualString сделать. и им пользоваться. У меня дельфи. А на дельфи тут умрешь создавать эти свойства, потом их нужно удалять, следить за копированием (все по ссылке)... Разве что интерфейс сделать... все равно фигня.