Главная страница
    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.021 c
15-1143902843
Некто
2006-04-01 18:47
2006.04.23
Знатокам CSS, HTML и JavaScript


2-1144603233
veb
2006-04-09 21:20
2006.04.23
Метка диска


1-1142683951
Ольга
2006-03-18 15:12
2006.04.23
Проблема при работе двух процессов с одним файлом.


3-1141205347
Kot_
2006-03-01 12:29
2006.04.23
Выборка без дублирования?


3-1141109077
Начинающий10
2006-02-28 09:44
2006.04.23
Администрирование





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский