Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2018, 14:04   #11
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

еще назрел вопрос: можно ли function MyCompare применить к TClientDataSet, данные которого отображаются в dbgrideh?
Etsareva вне форума Ответить с цитированием
Старый 06.03.2018, 14:13   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
можно ли function MyCompare применить к TClientDataSet, данные которого отображаются в dbgrideh?
на мой взгляд - нет, нельзя.
TCDS - это всё же, какой-никакой, но DBWare компонент, он реализует механизм доступа к данным. Сортировка у него есть, по индексам. Но использовать в качестве индекса Delphi функцию не получится.
возможно, что я ошибаюсь. может быть, кто-то предложит способ, как можно это обойти.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.03.2018, 14:19   #13
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Serge_Bliznykovfunction SortClientDataSet(ClientDataSet: TClientDataSet;
const FieldName: String): Boolean; тогда эту функцию использовать следует, думаю...
Etsareva вне форума Ответить с цитированием
Старый 06.03.2018, 14:27   #14
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Сортировка у него есть, по индексам
или, может, подскажете, как это возможно выполнить?
Etsareva вне форума Ответить с цитированием
Старый 06.03.2018, 14:28   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
тогда эту функцию использовать следует, думаю...
Вас не смущает второй параметр этой функции -
Цитата:
Сообщение от Etsareva Посмотреть сообщение
const FieldName: String
?

Это сортировка по указанному полю.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.03.2018, 14:35   #16
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
сортировка по указанному полю
мне именно такая сортировка и нужна.
Etsareva вне форума Ответить с цитированием
Старый 06.03.2018, 14:39   #17
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Код:
function SortClientDataSet(ClientDataSet: TClientDataSet;
  const FieldName: String): Boolean;
var
  i: Integer;
  NewIndexName: String;
  IndexOptions: TIndexOptions;
  Field: TField;
begin
Result := False;
Field := ClientDataSet.Fields.FindField(FieldName);
if Field = nil then Exit;
if (Field is TObjectField) or (Field is TBlobField) or
  (Field is TAggregateField) or (Field is TVariantField)
   or (Field is TBinaryField) then Exit;
ClientDataSet.IndexDefs.Update;
if ClientDataSet.IndexName = FieldName + '__IdxA'
then
  begin
    NewIndexName := FieldName + '__IdxD';
    IndexOptions := [ixDescending];
  end
else
  begin
    NewIndexName := FieldName + '__IdxA';
    IndexOptions := [];
  end;
for i := 0 to Pred(ClientDataSet.IndexDefs.Count) do
begin
  if ClientDataSet.IndexDefs[i].Name = NewIndexName then
    begin
      Result := True;
      Break
    end; //if
end; // for
if not Result then
    begin
      ClientDataSet.AddIndex(NewIndexName,
        FieldName, IndexOptions);
      Result := True;
    end; // if not
ClientDataSet.IndexName := NewIndexName;
end;
только эта функция просто сортирует текст по возрастанию или убыванию. а хотелось бы по определенным параметрам строки.
Etsareva вне форума Ответить с цитированием
Старый 06.03.2018, 14:53   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
только эта функция просто сортирует текст по возрастанию или убыванию
ну так я Вам про это и говорил выше:
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Это сортировка по указанному полю.

Цитата:
Сообщение от Etsareva Посмотреть сообщение
а хотелось бы по определенным параметрам строки.
понимаю. но эта функция так не умеет делать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.03.2018, 14:56   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Эта функция индекс находит для заданного поля или создает, если его нет. И не имеет ни какого отношения к выше перечисленным хотелкам ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.03.2018, 15:04   #20
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
не имеет ни какого отношения к выше перечисленным хотелкам
понятно. как же мне сравнить строки?
Etsareva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг строки OmegaBerkut Visual C++ 3 06.09.2015 12:17
Парсинг строки XaZaKa Общие вопросы по Java, Java SE, Kotlin 0 18.02.2015 17:38
Парсинг строки grafgrial Помощь студентам 14 17.01.2011 14:34
Парсинг следующей строки Fok Общие вопросы Delphi 4 12.09.2010 17:26
Парсинг строки beemoto Общие вопросы Delphi 18 12.04.2009 18:52