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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 17:25   #1
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
Восклицание сортировка по алфавиту в StringGrid (delphi)

Всем Здравствуйте!!!
помогите пожалуйста с сортировкой по алфавиту.
единственно должно быть исключение первых символов.
есть записи типа
----------------------------------------------------
ООО "Рога",7700234511
ООО "Копыта",7700435678
ООО "Василек",7700786745
ООО "Золотое Сало",5000234654
ИП Пупкин В.В.,770012345434
ИП Череззаборногозадеришенко П.А.,770094857678
ЗАО "Шарашкин и Ко",7700341761
ООО "Чебурек",7700235527
ОАО "Газпрем",7700945420
ООО "Буржуй",7700000123
--------------------------------------------------------
надо чтобы при сортировке исключались символы типа ООО " или ИП
и начинало сортировать с названия

вот я нашел вариант сортировки но без всяких исключений и с самых первых символов.

Код:
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
 const
  TheSeparator = '@';
 var
   CountItem, I, J, K, ThePosition: integer;
   MyList: TStringList;
   MyString, TempString: string;
 begin
  CountItem := GenStrGrid.RowCount;
  MyList        := TStringList.Create;
   MyList.Sorted := False;
   try
     begin
       for I := 1 to (CountItem - 1) do
         MyList.Add(GenStrGrid.Rows[i].Strings[ThatCol] + TheSeparator +
           GenStrGrid.Rows[i].Text);
      Mylist.Sort;
       for K := 1 to Mylist.Count do
       begin
        MyString := MyList.Strings[(K - 1)];
        ThePosition := Pos(TheSeparator, MyString);
         TempString  := '';
         TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
         MyList.Strings[(K - 1)] := '';
         MyList.Strings[(K - 1)] := TempString;
       end;
      for J := 1 to (CountItem - 1) do
         GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
     end;
   finally
    MyList.Free;
   end;
 end;

 procedure TForm1.ToolButton17Click(Sender: TObject);
 begin
  SortStringGrid(StringGrid1, 0);
 end;
помогите с исключением.

Последний раз редактировалось konsul_81; 03.05.2010 в 18:31.
konsul_81 вне форума Ответить с цитированием
Старый 03.05.2010, 20:20   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
MyList.Add(GenStrGrid.Rows[i].Strings[ThatCol] + TheSeparator +
           GenStrGrid.Rows[i].Text);
при добавлении в список сортировки исключи все что тебе не нужно ООО ИП кроме тебя определить правила исключения некому).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.05.2010, 21:37   #3
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
Восклицание

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
MyList.Add(GenStrGrid.Rows[i].Strings[ThatCol] + TheSeparator +
           GenStrGrid.Rows[i].Text);
при добавлении в список сортировки исключи все что тебе не нужно ООО ИП кроме тебя определить правила исключения некому).
ПРОБОВАЛ Я С ЭТОЙ СТРОКОЙ РАЗЛИЧНЫЕ ВАРИАНТЫ ПРОДЕЛЫВАТЬ, НО, ТО ОБРЕЖЕТ ПЕРВЫЕ СИМВОЛЫ ТО ДОПИШЕТ ИХ В НАЧАЛА ЕЩЕ РАЗ.
konsul_81 вне форума Ответить с цитированием
Старый 06.05.2010, 15:31   #4
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Вот так как-то :

Код:
function Handling ( aStr : String ) : String ;
begin
 aStr := TrimLeft(Astr);
 if Pos('ООО',aStr) = 1 then aStr := copy(aStr,4,Length(aStr)-3);
 if Pos('ЗАО',aStr) = 1 then aStr := copy(aStr,4,Length(aStr)-3);
 if Pos('ИП',aStr) = 1 then aStr := copy(aStr,3,Length(aStr)-2);
 Result := TrimLeft(aStr);
end ;


MyList.Add( Handling(GenStrGrid.Rows[i].Strings[ThatCol]) + TheSeparator +
 GenStrGrid.Rows[i].Text);
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948

Последний раз редактировалось Вадим Мошев; 10.12.2015 в 22:45.
Z1000000 вне форума Ответить с цитированием
Старый 10.05.2010, 23:50   #5
konsul_81
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 14
Хорошо

всем спасибо за помощь вот и исходник надеюсь кому-нибудь поможет
там полный набор загрузка, сохранение, вставка, удаление и конечно же сортировка
Вложения
Тип файла: rar sgrid_grid.rar (72.9 Кб, 51 просмотров)
konsul_81 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по алфавиту DimOn4Ik БД в Delphi 3 17.04.2010 06:48
Сортировка по алфавиту Cpluser Общие вопросы C/C++ 7 03.03.2010 10:11
сортировка по алфавиту на си++ Craz Помощь студентам 2 01.10.2009 23:33
StringGrid сделать сортировку по алфавиту Римма Компоненты Delphi 6 12.10.2007 16:15
Сортировка по алфавиту ЧИЖ Общие вопросы Delphi 1 16.03.2007 14:17