![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день. Есть код который из Строка и ЧИСЛО делает Объект и передает его в Список(TStringList)
Код:
(* 24.03.13 Ввод пары число=текст в СПИСОК*) procedure TForm1.Button1Click(Sender: TObject); (*----------------------------------------------------*) (* 24.03.13. функция объединения двух переменных в одну*) function MakePare(const DataStr:string; const DataInt:integer):TStringList; begin Result:=TStringList.Create; (*инизиализация выхода функции*) MakePare.AddObject(DataStr,Pointer(DataInt)); (*сборка пары СТРОКА-ЧИСЛО*) end; (*------------------------------------------------------*) var DataInt:integer; DataStr:string; Buff:TStringList; begin DataStr:=Edit2.Text; if Edit1.Text <> '' then (*защита от отсуствия значения*) DataInt:=StrToInt(Edit1.Text) else DataInt:=1; (*сли ничего не введено, то значение = 1*) Buff:=MakePare(DataStr,DataInt); (*передача пары в буферную ПЕРЕМ*) gStore.AddStrings(Buff); (*накопление строк-пар в буфере при каждом нажатии батона*) Memo1.Text:=gStore.Text; (*контроль*) FreeAndNil(Buff); (*ликвидация ПЕРЕМ в том числе MakePare*) end; Код:
(*24.03.13 Cортировки строк по значению ЧИСЛО*) procedure TForm1.Button2Click(Sender: TObject); (*------------------------------------------------------------------*) (*сортировка от максимума до 1*) function Compare(List: TStringList; Index1, Index2: Integer): Integer; begin if Integer(List.Objects[Index1])>Integer(List.Objects[Index2]) then Result:=-1 (* сейчас сортировка - максимум наверху, если 1 а далее -1 тогда наверху минимум*) else if Integer(List.Objects[Index1])<Integer(List.Objects[Index2]) then Result:=1 else Result:=0; end; (*------------------------------------------------------------------*) var T: TStringList; begin T:=TStringList.Create; T.AddStrings(gStore); (*ввод накопленных пар*) T.CustomSort(@Compare); (*@ - обязательно вызов функции через указатель адреса в ОЗУ*) Edit3.Text:=IntToStr(); (*вот тут непонятно как вывести ЧИСЛО*) Edit4.Text:=T[0]; (*первая строка списка, тут все просто*) FreeAndNil(T); end; |
#2
|
||||
|
||||
![]() приведи Pointer к Integer, а уже потом используй IntToStr()
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() правильный ответ:
Edit3.Text := IntToStr(Integer(T.Objects[0])); спасибо за подсказку |