Получил как то письмо:
"
Хотя бы название разное для моих каталого сделали бы.
Если человек держит несколько каталогов, то ему не понравяться одинаковые названия и описания...
Можно воспользоваться моей прогой:
/ru/forum/121447
Всем господам с репутацией более 1000 дам полную версию с ограничением времени бесплатно.
Зачем кому то понадобиться переборы вкладывать один в один? Если хотите напишу вам в личку - постучитесь в личку, если хотите продолжем беседу.
Разве, что сателиты генерить, только нужен внутренний интерпритатор скриптов.
Радиогрупп не нужен.
К-во вариантов должно быть в центре первоначального внимания слева в центре.
int *RES = new int [MAXLEV]; int CurLev=0; for(register int i=0;i<MAXLEV; i++) RES=1; register int tmp=1; register bool inKonstr=false; register char cur; for(register int i=0;i<Len; i++) { cur=mass; if (cur=='{') CurLev++; if (cur=='|') RES[CurLev]++; if (cur=='}'&&CurLev!=0) { RES[CurLev-1]*=RES[CurLev]; RES[CurLev]=1; CurLev--; } }
RES[0] - к-во вариантов.
НЕ намного сложнее
Даже если пользователь этого не заметит, то результат не нарушит пользовательской модели восприятия программы.
Вверх рядом с полем ввода к-ва - лучшее место для чек бокса все позможные варианты.
Радио групп я еще ни разу не видел в главном окне программы.
У меня на лету считались даже на старых телефонах все возможные ходы в шахматах на J2ME с учетом шахов. На лету.
Колличество вариантов - это смешно для одноуровневого вариационного синтаксиса.
считаеться вот так. Там просто нечего считать.
register int Res=1; register int tmp=1; register bool inKonstr=false; register char cur; for(register int i=0;i<Len; i++) { cur=mass; if (cur=='{') inKonstr=true; if (cur=='|'&&inKonstr) tmp++; if (cur=='}') { Res*=tmp; inKonstr=false; tmp=1; } }
в среднем пять-семь операций на символ, что очень мало. Ваш пример не удачный.
Вот обьявление функции которая генерит переборы по запятым и прочим разделителям.
Таких функций еще 2 штуки. только для препроцесса переборов. Эти функции вызываються рекурсивно. Просто представьте сложномть самой функции по к-ву параметров:
int __fastcall GetPereborTMP3(const long& N_KVO_GEN, char* Result,long& ResLng, String CurentSTR, const char** Elements, bool* ElementsMask, const int& ElementsCount, int Level, const int& MIN,const int& MAX, const char &Razd1, const bool & poriadok, int last, long& k);
символов только в обьявлении одной функции больше чем в реалтаймовом расчете вариантов.
В проге 5-6 тысяч строк кода.
300-400 функций.
15 форм.
Моих заголовочных файлов с функциями 10 штук.
Сборка генерации осуществляеться для каждого блока двумя сревнениями и копированием памяти.
memcpy(TMPChars+TMPCharsLng,VarElements[k][CurentGen[k]],VarElementsLng[k][CurentGen[k]]); TMPCharsLng+=VarElementsLng[k][CurentGen[k]];
по краям стандарт 15 px, Пропуски между группами элементов служат для их разделения. Может это не красиво, но удобно. В профессиональном софте упор на юсабилити всегда был, а не на лерн и бьюти...
Скидки для корпоративных пользователей
1ая версия 35 WMZ
2ая версия 30 WMZ
3ая версия 25 WMZ
5ая версия 20 WMZ
дальше --- 20 WMZ
Могут быть куплены в разное время...
Скорость создания описаний, названий и анкоров возрастет в 5-7 раз. Можно конечно воспользоваться услугами составителей описаний, но благодаря проге самому создать описание будет можно намного быстрее, чем обьяснить задание "регистратору".
Может немного грубо, извините. Но у меня создалось именно такое впечатление. Про какие "диалоговые окна" вы говорите?
Господин советую Вам в начале скачать программу, попользоваться ей минут 30, а потом уже что то говорить. А то Вы показываете себя не с лучшей стороны, давая свои суждения с бухты-барахты.
О каких диалоговых окнах вы говорите??????????
В программе есть только диалоги открытия/сохранения файлов. Которые дефалтные и такие же как ворд.