Викторина для 5 версии

Здесь содержатся плагины, графические оболочки, наборы смайлов и другие дополнения к CommFort.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Викторина для 5 версии

Сообщение Cilvay »

кидаете файл с базой вопросов, желательно от этой викторины, в папку pluginsdata, затем сам плагин кидаете в папку плагинс и запускаете плагин в клиенте
DENS
Сообщения: 389
Зарегистрирован: 09:55, 22.10.2006

Re: Викторина для 5 версии

Сообщение DENS »

cilvay писал(а):А создателю, написавшему плагин замены активного процесса и версии программы, бана не надо?
ты на других не смотри
Чат г.Тольятти и Самарской области
Адрес мастер сервера: chat.aido.ru
Аватара пользователя
Yaroslav
Сообщения: 846
Зарегистрирован: 03:45, 15.12.2007
Контактная информация:

Re: Викторина для 5 версии

Сообщение Yaroslav »

cilvay писал(а):кидаете файл с базой вопросов, желательно от этой викторины, в папку pluginsdata, затем сам плагин кидаете в папку плагинс и запускаете плагин в клиенте
Под вайном тормозит ужасно. Ответило на вопрос, а тем временем прошло уже три других :) Чат всё это время не отвечал совсем ака висел.

Под вендой работает, но отвечает мгновенно :)

Из крайности в крайность :lol:

Ты каждый раз делаешь поиск по файлу, или затягиваешь файл и уже в памяти ищешь?
Web-интерфейс серверных логов ——> http://commfort.com/ru/forum/viewtopic.php?t=6618
Web-статистика посещаемости чата —> http://commfort.com/ru/forum/viewtopic.php?t=6546
Благодарности —> R753244967524 Z664725275810 U806184306803 ЯД:41001743355185
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Викторина для 5 версии

Сообщение Cilvay »

все происходит исключительно в оперативной памяти. Просто вайну до винды еще очень далеко...
Аватара пользователя
Yaroslav
Сообщения: 846
Зарегистрирован: 03:45, 15.12.2007
Контактная информация:

Re: Викторина для 5 версии

Сообщение Yaroslav »

cilvay писал(а):все происходит исключительно в оперативной памяти. Просто вайну до винды еще очень далеко...
Нее, Я думаю это значит, что алгоритм не оптимальный :)
Нужно построить индекс хотя бы по первой букве и упорядочить по алфавиту вопросы.

вайн, конечно, требует дополнительных ресурсов, но не до такой степени, чтобы на PC отрабатывать мгновенно, а под вайном вообще ложиться.

Планируешь развивать? Или просто балуешься? Имею ввиду настройки задержек, случайностей всяких и т.д.
Web-интерфейс серверных логов ——> http://commfort.com/ru/forum/viewtopic.php?t=6618
Web-статистика посещаемости чата —> http://commfort.com/ru/forum/viewtopic.php?t=6546
Благодарности —> R753244967524 Z664725275810 U806184306803 ЯД:41001743355185
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Викторина для 5 версии

Сообщение Cilvay »

_
Последний раз редактировалось Cilvay 23:30, 21.05.2020, всего редактировалось 1 раз.
Аватара пользователя
Yaroslav
Сообщения: 846
Зарегистрирован: 03:45, 15.12.2007
Контактная информация:

Re: Викторина для 5 версии

Сообщение Yaroslav »

cilvay писал(а):если честно, то балуюсь. Под вайн подгонять не собираюсь, тк с алгоритмом все впорядке и под эмулятор подстраиваться нет смысла. Думая дальше можно будет накрутить всяких рандомных задержек, пропусков и т.д.
А можешь в кратце обрисовать как всё происходит?
Дело в том, что наверное задержка происходит на каком-то одном действии, которое оптимизируется на PC как-то аппаратно, что ли...

Попробуй отсортировать массив данных по алфавиту. Так из него будет проще выбирать.
Web-интерфейс серверных логов ——> http://commfort.com/ru/forum/viewtopic.php?t=6618
Web-статистика посещаемости чата —> http://commfort.com/ru/forum/viewtopic.php?t=6546
Благодарности —> R753244967524 Z664725275810 U806184306803 ЯД:41001743355185
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Викторина для 5 версии

Сообщение Cilvay »

Вот так:
text:=utext;
delete(text,14,length(text));
delete(text,1,7);
if text='ВОПРОС' then
begin
KillTimer(Form1.Handle,1);
vobr:=utext;
delete(vobr,1,15);
vobr:=Parse('(',vobr,1);
delete(vobr, length(vobr)-1, 2);
form1.memo2.lines.add('Вопрос до обработки: '+vobr);
if (vobr[length(vobr)]='.') or (vobr[length(vobr)]='?') then
vobr:=vobr else
vobr:=vobr+'.';
form1.memo2.lines.add('Обработанный вариант: '+vobr);

for i := 0 to form1.Memo1.Lines.Count - 1 do
begin
vs:=parse('|',form1.Memo1.Lines,1);
if vs=vobr then
begin
form1.memo2.lines.add('Ответ найден');
if random(form1.SpinEdit2.Value)=0 then begin
form1.memo2.lines.add('Вывод ответа будет пропущен');
end else begin
rch:=form1.SpinEdit3.Value+random(form1.SpinEdit1.Value);
form1.memo2.lines.add('Ответ будет выведен через: '+inttostr(rch)+' миллисекунд');
otv:=parse('|',form1.Memo1.Lines,2);
//sleep(tt);
SetTimer(Form1.Handle,1,rch,@Timer);

end;

end;
end;

Кстати, накрутил всяких прибамбасов: тык
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

Re: Викторина для 5 версии

Сообщение ОреЛ »

Фейл у вас весь в том, что есть редактирование фраз...
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
Аватара пользователя
Yaroslav
Сообщения: 846
Зарегистрирован: 03:45, 15.12.2007
Контактная информация:

Re: Викторина для 5 версии

Сообщение Yaroslav »

cilvay писал(а):Вот так:

Код: Выделить всё

for i := 0 to form1.Memo1.Lines.Count - 1 do
  begin
    vs:=parse('|',form1.Memo1.Lines[i],1);
    if vs=vobr then
      begin
      // skip
      end;
   end;
Думаю проблема именно из-за Memo. Почему именно его выбрал как хранилище базы, а не массив?
Web-интерфейс серверных логов ——> http://commfort.com/ru/forum/viewtopic.php?t=6618
Web-статистика посещаемости чата —> http://commfort.com/ru/forum/viewtopic.php?t=6546
Благодарности —> R753244967524 Z664725275810 U806184306803 ЯД:41001743355185
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Викторина для 5 версии

Сообщение Cilvay »

Мне мемо кажется удобнее. Тем более в win системах весь текст в мемо хранится в памяти. А на вайне он видимо как кеш на жестком диске
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Re: Викторина для 5 версии

Сообщение -=SJ=- »

cilvay писал(а):Мне мемо кажется удобнее. Тем более в win системах весь текст в мемо хранится в памяти. А на вайне он видимо как кеш на жестком диске
TMemo.Lines это класс TMemoStrings. при обращении к Lines мы попадаем в функцию

Код: Выделить всё

function TMemoStrings.Get(Index: Integer): string;
var
  Text: array[0..4095] of Char;
begin
  Word((@Text)^) := Length(Text);
  SetString(Result, Text, SendMessage(Memo.Handle, EM_GETLINE, Index,
    Longint(@Text)));
end;
Как видим чтобы запросить строку у мемо - ему посылается winapi сообщение EM_GETLINE что никак нельзя назвать оптимальным.
Так как Wine это не нативная среда для winapi то отсюда и тормоза.
Лучше использовать не Memo.Lines а хотя бы TStringList вот там действительно будет все в памяти крутится и никаких проволочек не будет.

P.S. Этот пост никак не означает что я одобрительно отношусь к данному плагину :) просто влез в дискусию
Аватара пользователя
Yaroslav
Сообщения: 846
Зарегистрирован: 03:45, 15.12.2007
Контактная информация:

Re: Викторина для 5 версии

Сообщение Yaroslav »

cilvay писал(а):Мне мемо кажется удобнее.
Если в этом случае использовать ассоциативный массив, в котором ключём будет вопрос, а значением ответ, то выборку можно производить без цикла, а прямым обращением с проверкой на существование. (понятно, что какой-то цикл будет, но он будет внутри и он, наверное, оптимизирован до нельзя)

К сожалению в делфи нет поддержки ассоциативных массивов, но есть возможность выкрутиться: http://ru.wikipedia.org/wiki/Ассоциатив ... сив#Delphi

В этом случае parse нужно будет делать на этапе вычитки файла.

Это более оптимально с точки зрения алгоритма, я думаю. Т.е. это уменьшит потребление ресурсов и на PC.
А на вайне он видимо как кеш на жестком диске
:shock:
Web-интерфейс серверных логов ——> http://commfort.com/ru/forum/viewtopic.php?t=6618
Web-статистика посещаемости чата —> http://commfort.com/ru/forum/viewtopic.php?t=6546
Благодарности —> R753244967524 Z664725275810 U806184306803 ЯД:41001743355185
Аватара пользователя
Yaroslav
Сообщения: 846
Зарегистрирован: 03:45, 15.12.2007
Контактная информация:

Re: Викторина для 5 версии

Сообщение Yaroslav »

О, ну вот и подтянулись ещё дельфисты :) Я просто под десктоп кодил оочень давно и оочень не сознательно...
-=SJ=- писал(а): Как видим чтобы запросить строку у мемо - ему посылается winapi сообщение EM_GETLINE что никак нельзя назвать оптимальным.
Так как Wine это не нативная среда для winapi то отсюда и тормоза.
Лучше использовать не Memo.Lines а хотя бы TStringList вот там действительно будет все в памяти крутится и никаких проволочек не будет.
Вот и я говорю, что надо бы какую-то структуру другую использовать. Ведь мемо, оно для вывода в форме, вроде как. Т.е. назначение иное.


cilvay, попробуешь? Там на пару минут работы, вроде...
Web-интерфейс серверных логов ——> http://commfort.com/ru/forum/viewtopic.php?t=6618
Web-статистика посещаемости чата —> http://commfort.com/ru/forum/viewtopic.php?t=6546
Благодарности —> R753244967524 Z664725275810 U806184306803 ЯД:41001743355185
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Викторина для 5 версии

Сообщение Cilvay »

Вот запихнул в другой компонент
Последний раз редактировалось Cilvay 17:29, 18.10.2010, всего редактировалось 1 раз.
Ответить