Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Вопрос по array of ...   Найти похожие ветки 

 
alles ©   (2006-03-17 11:37) [0]

Здраствуйте
Есть рекорд
type DetailsOfPayment = record
      NameFileOfPayment:string;
      TypeOfMessage:string;
      InternalType:string;
end;
Потом создаю array
var K: array of DetailsOfPayment
и заполняю этот array
Теперь вопрос как можно быстро сортировать этот array по полю, допустим TypeOfMessage?
Есть идея использовать TStringList.Sort но не знаю как связывать этот array с ним.
Спасибо


 
Reindeer Moss Eater ©   (2006-03-17 11:41) [1]

Смотри TStringList.CustomSort


 
alles ©   (2006-03-17 11:42) [2]

2 Reindeer Moss Eater ©   (17.03.06 11:41) [1]
как связывать этот array с TStringList?
CustomSort знаю как делается


 
Reindeer Moss Eater ©   (2006-03-17 11:43) [3]

Зачем тебе вообще array of ?


 
TUser ©   (2006-03-17 11:45) [4]

смотри любой алгоритм сортировки.  зы. я бы использовал не record, а ^resord - будет быстрее. Или TList.


 
alles ©   (2006-03-17 11:50) [5]

так чтоли

     NameFileOfPaymentList:TstringList
     TypeOfMessageList:TstringList
     InternalTypeList:TstringList

И в цикле где заполняю array поставить и
NameFileOfPaymentList.Add("value1");
     TypeOfMessageList.Add("value2");
     InternalTypeList.Add("value3");
и что это даст?


 
Reindeer Moss Eater ©   (2006-03-17 11:52) [6]

и что это даст?

Это - ничего не даст.

Откажись от array of свои записи и используй вместо него TStringList.
Сортируй его методом CustomSort


 
alles ©   (2006-03-17 11:59) [7]

2 Reindeer Moss Eater ©   (17.03.06 11:52) [6]
Скажите пожалуста как можно заполнить этот TStringList?


 
TUser ©   (2006-03-17 12:00) [8]

Методом Add. Только тебе надо хранить объекты по 3 строчки, так что использовать TStringList  имхо - не надо. Уж лучше TList. А еще лучше ручками - см. [4].


 
alles ©   (2006-03-17 12:03) [9]

TUser ©   (17.03.06 12:00) [8]
Понятно.  Думал что есть возможность с TStringList.
Вопрос заккрыт.
Спасибо всем.


 
Reindeer Moss Eater ©   (2006-03-17 12:04) [10]

type
 PDetailsOfPayment = ^DetailsOfPayment;
 DetailsOfPayment = record
  NameFileOfPayment,
  TypeOfMessage,
  InternalType      :string;
end;

var
NewItem : PDetailsOfPayment;
MyList : TStringList;
begin
....
repeat
 New(NewItem);
 NewItem^.NameFileOfPayment := "bla-bla-bla";
 NewItem^.TypeOfMessage := "bla-bla-bla";
 NewItem^.InternalType :=  "bla-bla-bla";
 MyList.AddObject("",NewItem);
until MyList.Count >= 100;
end;


 
Reindeer Moss Eater ©   (2006-03-17 12:05) [11]

Смысл использования TStringList:
Наличие у него метода CustomSort


 
alles ©   (2006-03-17 12:06) [12]

Reindeer Moss Eater ©   (17.03.06 12:04) [10]
Спасибо


 
Erik1 ©   (2006-03-17 12:10) [13]

От Array по любому придется отказыватся, но можно сохранить record если использовать TList.
Type
 PDetailsOfPayment = ^DetailsOfPayment;
 Playment: TList;
begin
 Playment := TList.Cteate;
 New(PDetailsOfPayment);
 PDetailsOfPayment.NameFileOfPayment := "Имя";
 PDetailsOfPayment.TypeOfMessage := "Фигня разная";
 PDetailsOfPayment.InternalType := "совсем фигня";
 Playment.Add(PDetailsOfPayment);
 ....
 Playment.Sort(ListSortCompare);
ListSortCompare - твоя хитрая функция сравнивающея Item1 и Item2.

PDetailsOfPayment(Item1).InternalType > PDetailsOfPayment(Item2).InternalType

P.S.
Хотя зачем тебе понадобилось делать все стрингами одному богу известно. Перечисление занчительно приятнее. IntType = (intFirst, intSecond, intKruto);


 
TUser ©   (2006-03-17 12:39) [14]

Я все-таки не понимаю - зачем делать сложно, когда можно сделать намного проще?


 
Reindeer Moss Eater ©   (2006-03-17 12:40) [15]

Где здесь сложность-то?


 
TStas ©   (2006-03-17 22:12) [16]

Переписав в TLIst указатели и сортировав TList


 
TUser ©   (2006-03-18 05:43) [17]

В том, что отсортировать это все можно и ручками. А студенты, использующие для этого класс и метод, потом приносят программу не более сложную, чем простенькая сортировка, но тем не менее требующую наличия дот нета последней версии, которого, разумеется, нет и не предвидится. Тоже, наверное, какое-нибудь готовое "решение" использовалось, не на Паскале ж писать, как ламакам.


 
Reindeer Moss Eater ©   (2006-03-18 14:35) [18]

В том, что отсортировать это все можно и ручками.

Я спрашивал в чем сложность, а не можно ли ручками и ножками.
Используя TList и TStringList нужно написать одну функцию, сравнивающую два элемента.
Сортируя ручками и ножками этой функции будет мало.

И что же проще в конечном итоге?


 
Virgo_Style ©   (2006-03-18 14:57) [19]

у вас разное понимание слова "проще"



Страницы: 1 вся ветка

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.063 c
8-1132324427
tq
2005-11-18 17:33
2006.04.23
Скроулинг


15-1143638800
49 Cent
2006-03-29 17:26
2006.04.23
Как называется песня?


15-1143902186
Gydvin
2006-04-01 18:36
2006.04.23
У меня глюки?


2-1144133902
veb
2006-04-04 10:58
2006.04.23
Запретить перерисовку DBGrida


8-1132575902
wicked
2005-11-21 15:25
2006.04.23
кватернионы и преобразования...