![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с алгоритмом пожалуйста
158963 © (2003-02-06 12:05:00)Уже второй день мучаюсь, никак не сделаю. Многие пользуются мирком или qchat. Там есть такая функция, если в поле где вводишь текст для отправления нажать кнопку вверх или вниз, то перелистывется история сообщений и это сообщение можно отправить повторно, но там кол-во сообщений хранящихся в памяти мало, только штку 50, потом они затираются друг другом.
Как реализовать такойже алгоритм? Я решил использовать listbox для хранения посланных строк и ограничить число сообщений в памяти 30. Спасибо.
158963 (2003-02-06 12:34:00) [21]Да это все понятно, но оно как бы сказать не совсем рабоче:)))
Вот мой код:
при событии onkeypress на поле для ввода текса:
if key=#13 then begin
if (Trim(msg.text)) <> "" then begin
if listbox1.Items.Count <= 4 then begin
listbox1.Items.Add(msg.Text);
sn:=listbox1.Items.Count-1;
end
else begin
listbox1.Items.Delete(p);
listbox1.Items.Insert(p,msg.text);
sn:=p;
if p < 4 then
p:=p+1
else begin
ky:=1;
p:=0;
end;
end;
end;
вот при нажатии клавиши вверх:
if key=38 then begin
if sn <> -1 then begin
msg.Text:=listbox1.Items.Strings[sn];
if (sn = 4) and (ky=1) then
sn:=0
else
begin
if sn=0 then
sn:=4
else
sn:=sn-1;
end;
end;
end;
Пашет, но есть логическая ошибюка :( Я уже запутался
Jeer (2003-02-06 12:14:00) [22]Сделай стек с использованием методов TListbox.Items
Insert, Delete.