Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c