![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по array of ...
alles © (2006-03-17 11:37:00)Здраствуйте
Есть рекорд
type DetailsOfPayment = record
NameFileOfPayment:string;
TypeOfMessage:string;
InternalType:string;
end;
Потом создаю array
var K: array of DetailsOfPayment
и заполняю этот array
Теперь вопрос как можно быстро сортировать этот array по полю, допустим TypeOfMessage?
Есть идея использовать TStringList.Sort но не знаю как связывать этот array с ним.
Спасибо
Virgo_Style (2006-03-18 14:57:00) [1]у вас разное понимание слова "проще"
Reindeer Moss Eater (2006-03-18 14:35:00) [2]В том, что отсортировать это все можно и ручками.
Я спрашивал в чем сложность, а не можно ли ручками и ножками.
Используя TList и TStringList нужно написать одну функцию, сравнивающую два элемента.
Сортируя ручками и ножками этой функции будет мало.
И что же проще в конечном итоге?
TUser (2006-03-18 05:43:00) [3]В том, что отсортировать это все можно и ручками. А студенты, использующие для этого класси метод, потом приносят программу не более сложную, чем простенькая сортировка, но тем не менее требующую наличия дот нета последней версии, которого, разумеется, нет и не предвидится. Тоже, наверное, какое-нибудь готовое "решение" использовалось, не на Паскале ж писать, как ламакам.
TStas (2006-03-17 22:12:00) [4]Переписав в TLIst указатели и сортировав TList
Reindeer Moss Eater (2006-03-17 12:40:00) [5]Где здесь сложность-то?
TUser (2006-03-17 12:39:00) [6]Я все-таки не понимаю - зачем делать сложно, когда можно сделать намного проще?
Erik1 (2006-03-17 12:10:00) [7]От 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);
alles (2006-03-17 12:06:00) [8]Reindeer Moss Eater © (17.03.06 12:04) [10]
Спасибо
Reindeer Moss Eater (2006-03-17 12:05:00) [9]Смысл использования TStringList:
Наличие у него метода CustomSort
Reindeer Moss Eater (2006-03-17 12:04:00) [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;
alles (2006-03-17 12:03:00) [11]TUser © (17.03.06 12:00) [8]
Понятно. Думал что есть возможность с TStringList.
Вопрос заккрыт.
Спасибо всем.
TUser (2006-03-17 12:00:00) [12]Методом Add. Только тебе надо хранить объекты по 3 строчки, так что использовать TStringList имхо - не надо. Уж лучше TList. А еще лучше ручками - см. [4].
alles (2006-03-17 11:59:00) [13]2 Reindeer Moss Eater © (17.03.06 11:52) [6]
Скажите пожалуста как можно заполнить этот TStringList?
Reindeer Moss Eater (2006-03-17 11:52:00) [14]и что это даст?
Это - ничего не даст.
Откажись от array of свои записи и используй вместо него TStringList.
Сортируй его методом CustomSort
alles (2006-03-17 11:50:00) [15]так чтоли
NameFileOfPaymentList:TstringList
TypeOfMessageList:TstringList
InternalTypeList:TstringList
И в цикле где заполняю array поставить и
NameFileOfPaymentList.Add('value1');
TypeOfMessageList.Add('value2');
InternalTypeList.Add('value3');
и что это даст?
TUser (2006-03-17 11:45:00) [16]смотри любой алгоритм сортировки. зы. я бы использовал не record, а ^resord - будет быстрее. Или TList.
Reindeer Moss Eater (2006-03-17 11:43:00) [17]Зачем тебе вообще array of ?
alles (2006-03-17 11:42:00) [18]2 Reindeer Moss Eater © (17.03.06 11:41) [1]
как связывать этот array с TStringList?
CustomSort знаю как делается
Reindeer Moss Eater (2006-03-17 11:41:00) [19]Смотри TStringList.CustomSort