Вверх ↑
Этот топик читают: Гость
Ответов: 875
Рейтинг: 322
#1: 2008-07-23 01:29:30 ЛС | профиль | цитата
Собрал схему, вроде все могу объяснить как работает и работает без ошибок. Но стоит только подключить точки doRandomize как начинают переть повторы и я не могу объяснить с чем это связано. Это раз и второе как отсортировать строки, что-то не получается.code_9532.txt
карма: 1

0
файлы: 1code_9532.txt [3.8KB] [239]
Ответов: 5446
Рейтинг: 323
#2: 2008-07-23 04:19:36 ЛС | профиль | цитата
Повторы - если я правильно понял значение этого термина (повторное выпадение уже выпавшего номера) - в этой программе возможны. Введите проверку перед добавлением нового числа в список.

По сортировке: после добавления чисел вопспользуйтесь точкой doSort, правда там сортировка идёт не по числовому значению...

Общие замечания:
не очень понятна идея с двумя listbox-ами.

------------ Дoбавленo:

Сейчас выложу подправленный вариант...
------------ Дoбавленo:


Add(MainForm,3491091,70,98)
{
Left=20
Top=105
Width=659
Height=508
Caption=" 6 aus 49 + Super Zahl"
link(onCreate,10149846:doEvent1,[])
}
Add(Random,12789762,273,196)
{
Min=1
Max=49
link(onRandom,2110524:doCompare,[])
}
Add(Hub,10149846,168,112)
{
link(onEvent1,5007303:doRandomize,[(404,118)(404,146)])
link(onEvent2,12789762:doRandomize,[(256,125)(256,209)])
}
Add(For,15406465,182,210)
{
Start=1
End=6
link(onEvent,8231668:doWork2,[])
link(onStop,1609522:doEvent1,[(226,223)(226,265)(184,265)(184,321)])
}
Add(Hub,13096784,126,168)
{
InCount=2
OutCount=6
link(onEvent1,2721669:doClear,[])
link(onEvent2,5647412:doClear,[(300,181)(300,83)])
link(onEvent3,3280366:doClear,[(422,188)(422,195)])
link(onEvent4,5007303:doRandom,[(227,195)(227,139)])
link(onEvent5,7122427:doReset,[(233,202)(233,377)])
link(onEvent6,15406465:doFor,[(170,209)(170,216)])
}
Add(Button,4078862,63,168)
{
Left=20
Top=60
Caption="gen"
link(onClick,13096784:doEvent1,[])
}
Add(Label,11327569,504,539)
{
Left=330
Top=385
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(Label,12646398,504,581)
{
Left=385
Top=385
Width=60
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(Label,5986804,504,371)
{
Left=75
Top=385
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(Label,10763763,504,413)
{
Left=145
Top=385
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(IndexToChanel,7962782,441,476)
{
Count=6
Point(Index)
link(onEvent1,5986804:doText,[(489,482)(489,377)])
link(onEvent2,10763763:doText,[(489,489)(489,419)])
link(onEvent3,14007026:doText,[(489,496)(489,461)])
link(onEvent4,4277900:doText,[])
link(onEvent5,11327569:doText,[(489,510)(489,545)])
link(onEvent6,12646398:doText,[(489,517)(489,587)])
link(Index,7122427:Count,[(447,432)(314,432)])
}
Add(Label,14007026,504,455)
{
Left=210
Top=385
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(Label,4277900,504,497)
{
Left=275
Top=385
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(Label,13047464,497,133)
{
Left=545
Top=380
Font=[Times New Roman,20,0,255,1]
Caption=""
}
Add(Random,5007303,434,133)
{
Max=9
link(onRandom,13047464:doText,[])
}
Add(ListBox,2721669,665,161)
{
Left=125
Top=30
Width=165
Height=220
Sort=0
}
Add(Timer,4180062,259,357)
{
Interval=500
Enable=1
AutoStop=6
link(onTimer,7122427:doNext,[])
}
Add(If_else,2110524,343,196)
{
link(onTrue,8231668:doWork1,[(388,202)(388,165)(242,165)])
link(onFalse,3358211:doEnum,[(390,209)(390,279)])
link(Op2,5007303:Random,[(356,180)(440,180)])
}
Add(HubEx,8231668,238,203)
{
link(onEvent,12789762:doRandom,[(260,216)(260,202)])
}
Add(StrList,5647412,420,70)
{
}
Add(IntegerArray,3280366,469,175)
{
IntArray=[]
Point(doSort)
}
Add(ArrayRW,9093985,504,322)
{
link(Array,10307450:Var3,[(510,233)])
link(Value,15866870:Var2,[(524,294)(475,294)])
}
Add(ArrayEnum,3358211,399,273)
{
onBreakEnable=0
Point(onBreak)
link(onItem,9694794:doCompare,[])
link(onEndEnum,1492747:doEvent1,[(439,286)(439,342)])
link(Array,10307450:Var2,[])
link(onBreak,8231668:doWork3,[(443,293)(443,240)(242,240)])
}
Add(If_else,9694794,595,273)
{
link(onTrue,3358211:doStop,[(632,279)(632,316)(387,316)(387,286)])
link(Op2,1990640:Var3,[(608,261)])
}
Add(GetDataEx,10307450,392,224)
{
link(Data,3280366:Array,[(405,214)(475,214)])
}
Add(Hub,1492747,448,336)
{
link(onEvent1,9093985:doAdd,[])
link(onEvent2,6484761:doData,[])
}
Add(GetDataEx,15866870,462,252)
{
Angle=3
link(Data,12789762:Random,[(279,261)])
}
Add(Hub,1609522,196,315)
{
link(onEvent1,3280366:doSort,[(457,321)(457,202)])
link(onEvent2,4180062:doTimer,[(244,328)(244,363)])
}
Add(ArrayRW,2705767,357,357)
{
link(onRead,7962782:doEvent,[(415,363)(415,482)])
link(Array,10307450:Var1,[(363,233)])
}
Add(Counter,7122427,308,357)
{
Min=-1
Max=6
Default=-1
link(onNext,2705767:doRead,[])
}
Add(GetDataEx,1990640,518,252)
{
Angle=3
link(Data,15866870:Var3,[])
}
Add(DoData,6484761,581,343)
{
link(onEventData,2721669:doAdd,[(639,349)(639,167)])
link(Data,1990640:Var2,[(587,304)(531,304)])
}
------------ Дoбавленo:

Если будут вопросы - пиши, постараюсь объяснить.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#3: 2008-07-23 10:34:14 ЛС | профиль | цитата
kamakama, Так наверное попроще будет и без повторов

Add(MainForm,10041815,-10,126)
{
Left=20
Top=105
Width=442
Height=215
link(onCreate,12789762:doRandomize,[(45,146)(45,125)])
}
Add(Random,12789762,53,112)
{
Min=1
Max=49
link(onRandom,14309894:doConvert,[])
}
Add(StrList,11660809,326,70)
{
Point(StrToFind)
Point(Index)
Point(doGetIndex)
Point(doSort)
link(StrToFind,14186405:Value,[(346,56)(235,56)(235,152)(199,152)])
}
Add(Button,11373228,-101,63)
{
Left=10
Top=20
link(onClick,9283232:doEvent1,[])
}
Add(For,16254968,-10,70)
{
Start=1
End=6
link(onEvent,2184294:doWork2,[])
link(onStop,8874639:doEvent1,[(31,83)(31,202)])
}
Add(Hub,9283232,-59,63)
{
link(onEvent1,11660809:doClear,[(297,69)(297,83)])
link(onEvent2,16254968:doFor,[])
}
Add(If_else,14811026,347,154)
{
Op2=Integer(-1)
link(onTrue,11660809:doAdd,[(391,160)(391,142)(314,142)(314,76)])
link(onFalse,2184294:doWork1,[(400,167)(400,12)(36,12)])
link(Op1,11660809:Index,[])
}
Add(Hub,747841,256,112)
{
link(onEvent1,11660809:doGetIndex,[])
link(onEvent2,14811026:doCompare,[(297,125)(297,160)])
}
Add(Label,11327569,522,266)
{
Left=295
Top=70
Font=[Times New Roman,24,1,255,1]
Caption=""
Alignment=1
}
Add(Label,12646398,522,308)
{
Left=350
Top=70
Width=60
Font=[Times New Roman,24,1,255,1]
Caption=""
Alignment=1
}
Add(Label,5986804,522,98)
{
Left=40
Top=70
Font=[Times New Roman,24,1,255,1]
Caption=""
Alignment=1
}
Add(Label,10763763,522,140)
{
Left=110
Top=70
Font=[Times New Roman,24,1,255,1]
Caption=""
Alignment=1
}
Add(ArrayEnum,16608032,340,203)
{
link(onItem,15468007:doConvert,[])
link(Array,11660809:Array,[])
}
Add(IndexToChanel,7962782,459,203)
{
Count=6
Point(Index)
link(onEvent1,5986804:doText,[(500,209)(500,104)])
link(onEvent2,10763763:doText,[(506,216)(506,146)])
link(onEvent3,14007026:doText,[(512,223)(512,188)])
link(onEvent4,4277900:doText,[])
link(onEvent5,11327569:doText,[(514,237)(514,272)])
link(onEvent6,12646398:doText,[(503,244)(503,314)])
link(Index,16608032:Index,[(465,191)(448,191)(448,244)(353,244)])
}
Add(Label,14007026,522,182)
{
Left=175
Top=70
Font=[Times New Roman,24,1,255,1]
Caption=""
Alignment=1
}
Add(Label,4277900,522,224)
{
Left=240
Top=70
Font=[Times New Roman,24,1,255,1]
Caption=""
Alignment=1
}
Add(Hub,8874639,95,196)
{
link(onEvent1,11660809:doSort,[(307,202)(307,125)])
link(onEvent2,16608032:doEnum,[])
}
Add(Memory,14186405,193,112)
{
link(onData,747841:doEvent1,[])
}
Add(Convertor,15468007,403,203)
{
Mode=1
link(onResult,7962782:doEvent,[])
}
Add(HubEx,2184294,32,63)
{
link(onEvent,12789762:doRandom,[(47,76)(47,118)])
}
Add(InfoTip,8155172,46,28)
{
Info=#36:
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#4: 2008-07-23 19:35:21 ЛС | профиль | цитата
Tad, тут налицо потеря функциональности:

1) Число от 0 до 9 (видимо - SuperZahl)
2) Эффект постепенного появления чисел

Плюс неполное владение матчастью: фрагмент

#sha
Add(Math,11850978,211,63)
{
Op1=100
link(onResult,4406303:doCopy,[])
}
Add(Copy,4406303,260,63)
{
Position=2
Count=2
}
легко заменяется на

#sha
Add(Convertor,14309894,238,350)
{
SymbolFill="0"
}

Но, в целом, более правильное решение
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#5: 2008-07-23 20:06:23 ЛС | профиль | цитата
iarspider, просто Convertor вылетел из головы. За nesco не успеваешь запоминать
исправил, сейчас перезалью.
------------ Дoбавленo:

iarspider писал(а):
Число от 0 до 9 (видимо - SuperZahl)
пусть сам добавляет, все равно выиграет и не поделится
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#6: 2008-07-23 23:18:29 ЛС | профиль | цитата
Tad писал(а):
За nesco не успеваешь запоминать

Млин, оно там уже второй релиз висит
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#7: 2008-07-23 23:38:17 ЛС | профиль | цитата
nesco писал(а):
Млин, оно там уже второй релиз висит
Ну я же в хорошем смысле
------------ Дoбавленo:

но кажется, что нижняя точка в Convertor была бы не лишней
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#8: 2008-07-24 01:12:06 ЛС | профиль | цитата
Tad писал(а):
но кажется, что нижняя точка в Convertor была бы не лишней

Помню, что кто-то (не ты, конечно) был против любых нижних точек.

Но я думаю, что все же стоит.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#9: 2008-07-24 09:47:50 ЛС | профиль | цитата
nesco, один нескромный вопрос: (просто интересно)
Зачем ты писал в Convertor свою function Hex2Int(st:string):integer; ?
Чем тебя не устроила коловская ?

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#10: 2008-07-24 10:20:40 ЛС | профиль | цитата
Это не я писал, это было до меня. Функция KOL'a сложнее написана
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#11: 2008-07-24 10:33:39 ЛС | профиль | цитата
Ясненько

function Hex2Int(st:string):integer;
var i,ln:integer;
begin
// st := LowerCase(st); // Убрать.
Result := 0;
ln := Length(st);
for i := 1 to ln do
case st[i] of
'0'..'9': Result := Result shl 4 + ord(st[i]) - 48;
'A'..'F': Result := Result shl 4 + ord(st[i]) - 55; // Добавить
'a'..'f': Result := Result shl 4 + ord(st[i]) - 87;
else break;
end;
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#12: 2008-07-24 14:10:05 ЛС | профиль | цитата
Tad, объясни, зачем Я сомневаюсь, что если, например, применить напрямую API-функцию CharLower(PChar(St)), то она будет работать медленнее, чем то, что ты поставил в цикле

------------ Дoбавленo:


Я так подумал, что добавление нижней точки, хотя и полезно, но имеет небольшой минус, сильно проявляющийся при каскадировании элементов, особенно когда их много и в цикле, например: HexToInt + IntToBin = HexToBin. Здесь в HexToInt будет иметь лишнее преобразование

------------ Дoбавленo:


Tad, вот попробуй -- версия конвертора с нижней точкой. Пока не знаю, добавлять или не добавлять в пакет

-- Смотреть дальше по топику --
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#13: 2008-07-24 17:17:38 ЛС | профиль | цитата
nesco, четыре первых типа проверил - полет нормальный. Вечером протестирую остальные - отпишу.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#14: 2008-07-24 17:33:57 ЛС | профиль | цитата
Tad писал(а):
Вечером протестирую остальные - отпишу

Лучше проверить каскадом в циклах, насколько падает быстродействие
карма: 22

0
Ответов: 8930
Рейтинг: 823
#15: 2008-07-24 18:04:39 ЛС | профиль | цитата
nesco, с нижней точкой Tad напомнил мне одного римского сенатора повторявшего "Карфаген должен быть разрушен!" - и он был разрушен
карма: 19

1
Голосовали:Tad
Сообщение
...
Прикрепленные файлы
(файлы не залиты)