Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#1: 2011-08-12 17:51:23 ЛС | профиль | цитата
code_24879.txt
Задача:
требуется сделать накопитель чисел. Подумав решил сделать способ показанный выше.
но нужно предусмотреть в схеме отмену последних введённых чисел(или числа), а на текущем варианте это в корне неудобно
также требуется сделать поиск по комбинациям чисел
думаю какой использовать способ из наиболее быстрыхудобных
карма: 0

0
файлы: 1code_24879.txt [136B] [149]
Ответов: 3889
Рейтинг: 362
#2: 2011-08-12 18:33:13 ЛС | профиль | цитата
hitman249, вариантов буквально масса, например, StrList, как вариант - динамический массив (Matrix), но уж точно не такой, как у Вас (я сам его использовал в скоростном делителе на группы символов недавно, знаю, о чём говорю).
карма: 1

0
Ответов: 1528
Рейтинг: 57
#3: 2011-08-12 19:03:21 ЛС | профиль | цитата
1nd1g0, если использовать StrList то нужно преобразовывать все числа в строку, а если чисел много то это уже будет медленнее чем мой вариант
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2011-08-12 19:29:08 ЛС | профиль | цитата
hitman249 писал(а):
если использовать StrList то нужно преобразовывать все числа в строку

А StrCatDelim совсем не преобразовывает все "числа в строку" ?
procedure THIStrCatDelim._work_doStrCatDlm;
var s1,s2,d1:string;
begin
s1 := ReadString(_Data,_data_Str1,_prop_Str1);
s2 := ReadString(_Data,_data_Str2,_prop_Str2);
d1 := ReadString(_Data,_data_Delimiter,_prop_Delimiter);
FRes := s1 + d1 + s2;
_hi_CreateEvent(_data, @_event_onStrCatDlm, FRes);
end;

hitman249, как говорит nesco: "не смеши мои тапочки"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1528
Рейтинг: 57
#5: 2011-08-12 19:50:46 ЛС | профиль | цитата
Tad, ты предлагаешь использовать StrList, а потом склеивать все числа через StrCatDelim или я чтото недопонял?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#6: 2011-08-12 19:58:47 ЛС | профиль | цитата
hitman249, если по честному, то я вообще не понимаю, что тебе надо.
Если использовать StrList.doAdd для накопления, а потом заменить
на компонентом Replace- получишь "склейку" через пробел.
Еще раз повторюсь - нет ясности в поставленной задаче.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5227
Рейтинг: 587
#7: 2011-08-12 20:00:34 ЛС | профиль | цитата
Вариант project_1.sha
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1project_1.sha [1KB] [142]
Гость
Ответов: 17029
Рейтинг: 0
#8: 2011-08-12 20:12:23 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 16:18:59
карма: 0

0
Ответов: 1528
Рейтинг: 57
#9: 2011-08-12 20:26:34 ЛС | профиль | цитата
как сделано сейчас: числа добавляются простой склейкой через StrCatDelim получается строка(числа с пробелами),
далее поиск, берётся полученная выше строка, оттуда первые шесть чисел (отсчитываем по пробелам, т.к. числа могут быть и двузначными), ищутся совпадение по всей строке (которая будет просто огромная).

тоесть я почему отказался от StrList, потому что перед поиском нужно все числа из него выдёргивать и склеивать в цельную строку, а она может быть очень большой, что скажется на производительности(пользователь подумает что программа зависла ещё ненароком).

а в StrCatDelim все числа уже в строке и переделывать ничего не нужно, но проблемно делать отмену неверно введённого числа.
------------ Дoбавленo в 20.26:
Add(Edit,904778,546,329){
Left=10
Top=17
Width=60
Height=35
Font=[Arial,18,1,0,1]
Text=""
Alignment=2
ClearAfterEnter=1
}
Add(BitBtn,2896208,462,371)
{
Left=70
Top=16
Width=60
Height=38
Caption="OK"
link(onClick,12886191:doEvent1,[])
}
Add(HilightMemo,6028793,896,357)
{
Left=130
Top=16
Width=231
Height=57
Color=16314690
Font=[Arial Black,18,1,0,204]
HilightStrings=#5:0=Red|7:1=Black|5:2=Red|7:3=Black|5:4=Red|7:5=Black|5:6=Red|7:7=Black|5:8=Red|7:9=Black|6:10=Red|8:11=Black|6:12=Red|8:13=Black|6:14=Red|8:15=Black|6:16=Red|8:17=Black|6:18=Red|8:19=Black|6:20=Red|8:21=Black|6:22=Red|8:23=Black|6:24=Red|8:25=Black|6:26=Red|8:27=Black|6:28=Red|8:29=Black|6:30=Red|8:31=Black|6:32=Red|8:33=Black|6:34=Red|8:35=Black|6:36=Red|0:|
HilightFont=[Courier New,8,0,0,1]
ReadOnly=0
SmartTabs=1
Indent=1
RightMargin=1
ColorRightMargin=536870911
AutoFocus=1
}
Add(DoData,6112955,546,371)
{
link(onEventData,10896206:doConvert,[])
link(Data,904778:Text,[])
}
Add(StrCatDelim,12412645,798,378)
{
@Hint=#10:Накопитель|
Delimiter=" "
link(onStrCatDlm,6028793:doText,[])
link(Str2,12412645:Result,[(811,366)(807,366)(807,422)(804,422)])
AddHint(60,63,76,13,@Hint)
}
Add(Hub,12886191,518,371)
{
link(onEvent1,6112955:doData,[])
link(onEvent2,904778:doText2,[(540,384)(540,342)])
}
Add(Hub,13112301,714,371)
{
link(onEvent1,6028793:doClear,[(748,377)(748,370)])
link(onEvent2,12412645:doStrCatDlm,[])
}
Add(If_else,10500283,665,371)
{
Type=2
Op2=Integer(37)
link(onFalse,13112301:doEvent1,[(705,384)(705,377)])
}
Add(Convertor,10896206,602,371)
{
Mode=1
link(onResult,10500283:doCompare,[])
}
карма: 0

0
Ответов: 3889
Рейтинг: 362
#10: 2011-08-12 21:24:32 ЛС | профиль | цитата
hitman249 писал(а):
перед поиском нужно все числа из него выдёргивать и склеивать в цельную строку

ArrayFind
карма: 1

0
Ответов: 8928
Рейтинг: 823
#11: 2011-08-12 21:38:47 ЛС | профиль | цитата
hitman249, вот (ссылка удалена, см ниже) Ну а когда же не спрашивать, а отвечать
------------ Дoбавленo в 21.38:
1nd1g0, ещё разик помогите
карма: 19

0
Ответов: 3889
Рейтинг: 362
#12: 2011-08-12 22:20:01 ЛС | профиль | цитата
Леонид писал(а):
ещё разик

code_24883.txt
карма: 1

0
файлы: 1code_24883.txt [4.8KB] [144]
Ответов: 1528
Рейтинг: 57
#13: 2011-08-13 08:47:33 ЛС | профиль | цитата
Леонид, спасибо конечно, но немного не то
мне числа по отдельности искать не нужно,
hitman249 писал(а):
поиск по комбинациям чисел


ПРИМЕР у вас:
ищем 1 12 13 20
Находим 29 25 12 14 11 1 18 7 13 16 23 20

То что требуется:
ищем 1 12 13 20
Находим 29 25 12 14 11 1 18 7 13 16 23 20 21 15 9 13 1 12 13 20 16 33 2 14
карма: 0

0
Ответов: 8928
Рейтинг: 823
#14: 2011-08-13 09:48:21 ЛС | профиль | цитата
hitman249, ищется (и удаляется) именно комбинация подряд идущих чисел
------------ Дoбавленo в 09.46:
Комбинация задаётся через пробел
------------ Дoбавленo в 09.48:
1nd1g0, спасибо
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#15: 2011-08-13 09:54:28 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 16:19:00
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)