Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1144441086
ctudent
2006-04-08 00:18
2006.04.23
Счётчик


2-1144254037
Khim
2006-04-05 20:20
2006.04.23
Mail


3-1141206268
RomanH
2006-03-01 12:44
2006.04.23
Структура БД торговой организации


2-1144268509
Nick_serov
2006-04-06 00:21
2006.04.23
Выполняется только половина.....


2-1144397600
Creative
2006-04-07 12:13
2006.04.23
как сохранить TList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский