Консультация № 159655
05.02.2009, 08:31
0.00 руб.
0 4 2
Здравствуйте! Вопрос такой. В окне memo сгенерирован массив целых чисел. Нужно записать полученный массив в окно ListBox со свойством упорядоченности. Вывести в окно Edit1 время начала операции записи и в окно Edit2 время окончания записи всех чисел.

Обсуждение

Неизвестный
05.02.2009, 09:01
общий
В каком виде он сгенерирован?
В одной строке - одно число или сплошным текстом с разделителями?
давно
Посетитель
268788
8
05.02.2009, 09:18
общий
В одной строке - одно число.
Неизвестный
05.02.2009, 09:40
общий
это ответ
Здравствуйте, Vlad9240!
Где-то примерно так. Код с пояснениями в приложении.
Удачи.

Приложение:
procedure TForm1.Button1Click(Sender: TObject);
var
i, temp_1, temp_2: integer;
search: boolean;
temp: string;

begin
ListBox1.Clear; ListBox1.Sorted:= False; {очистка списка}
Edit1.Text:= TimeToStr(Now); {начальное время}
for i:= 0 to Memo1.Lines.Count - 1 do ListBox1.Items.Add(Memo1.Lines.Strings[i]); {перенос данных}

{процедура сортировки ListBox1 по возрастанию}
search:= True;
while search do
begin
search:= False;
for i:= 0 to ListBox1.Items.Count - 2 do
begin
temp_1:= StrToInt(ListBox1.Items.Strings[i]);
temp_2:= StrToInt(ListBox1.Items.Strings[i+1]);
if temp_1 > temp_2 then
begin
temp:= ListBox1.Items.Strings[i];
ListBox1.Items.Strings[i]:= ListBox1.Items.Strings[i+1];
ListBox1.Items.Strings[i+1]:= temp;
search:= True;
end;
end;
end;
{окончание процедуры сортировки}

Edit2.Text:= TimeToStr(Now); {конечное время}
end;
Неизвестный
05.02.2009, 09:47
общий
это ответ
Здравствуйте, Vlad9240!
Примерно так, смотрите приложение. Не проверял правда.

Приложение:
var
T1, T2:TTime;
i, i2, e1, e2:integer;
begin
T1:=Time;
for i:=0 to memo1.list.count-1 do
begin
e1:=strtoint(Memo1.List.Strings[i];
i2:=0;
while e1<strToInt(ListBox1.Item.strings[i2] do
begin
inc[i2];
if i2>=ListBox1.Item.Count then Break;
end;
ListBox1.Item.Insert(Memo1.List.String[i], i2);
end;
t2:=Time;
Edit1.text:=TimeToStr(T1);
Edit2.text:=TimeToStr(T2);
end;
Форма ответа