Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Внизмножества Найти похожие ветки
← →
Rel_ (2003-07-08 10:05) [0]как мне правильно объявить массив множеств строк, например:
mas =
[
("01", "02"),
("33", "42", "11", ..),
...
("21", "02"),
]
← →
Rel_ (2003-07-08 10:08) [1]просто мне хочется применить слю цикл:
for i:=0 to 7 do begin
if _qry.FieldByName("r").AsString in mas[i] then ...
break;
end;
← →
Radionov Alexey (2003-07-08 10:09) [2]Никак. Только перечислимые типы (byte в том числе) допускают множественное представление.
← →
Q (2003-07-08 10:09) [3]A set is a collection of values of the same ordinal type
← →
Anatoly Podgoretsky (2003-07-08 10:11) [4]F1 + index (Sets) или букварь по Паскалю
← →
Radionov Alexey (2003-07-08 10:12) [5]>Rel_
Поступить можно несколько проще, если склеить строки-шаблоны (сделать конкатенацию, причем обозначив начало и конец строки какими-либо спецсимволами) а проверку на вхождение производить с помощью pos
← →
Sandman25 (2003-07-08 10:19) [6]type
MySet = set of byte;
const
Arr: array[0..1] of MySet = ([1,2],[33,42,11]);
var
I, J: Byte;
begin
J := 11;
for I := Low(Arr) to High(Arr) do
if J in Arr[I] then
...
end;
← →
Rel_ (2003-07-08 10:22) [7]to Anatoly Podgoretsky ©
энто конечно понятно - букварь. вот толко что-то не получается.
по F1 ничего вразумительного, а букваря под рукой нет.
я написал след: -- ругается с первой строки.
TRSet = set of string;
...
var mas : array[1..7] of TRSet
...
procedure init;
begin
mas[1]:= ["01", "33" ....];
mas[2]:= ... ;
...
end;
← →
Rel_ (2003-07-08 10:23) [8]to Sandman25
вот !!!, но только со стрингом!!!
← →
Radionov Alexey (2003-07-08 10:27) [9]>Rel_ (08.07.03 10:23)
Дался тебе этот стринг!
Нельзя делать множества из строчек!
Если именно со строками нужно работать - делай контекстный поиск. Я уже писал примерно как оно будет выглядеть.
Ежели ехать дальше - то опять-таки алгоритмы бинарного поиска в отсортированном (естественно) массиве строк.
В крайнем случае - tStringList
← →
Anatoly Podgoretsky (2003-07-08 10:28) [10]Rel_ (08.07.03 10:22)
То есть как это не получается, я же тебе прямо указал тему в справке, искать через индекс. Там указано какие могут быть множества, их мощность, в общем полная информация по множествам, включая возможные операции над множествами.
Если у тебя нет справки, то самое время ее установить.
← →
Anatoly Podgoretsky (2003-07-08 10:29) [11]Ну и дополнение кроме пользования индексом - надо научиться еще пользоваться и See Also, Example
← →
Sandman25 (2003-07-08 10:32) [12]Rel_ (08.07.03 10:23)
Со стрингом так не пойдет, Вам ведь уже объясняли.
Но если в строках хранятся именно числа, то строку можно перевести в число (StrToInt) и дальше использовать данный вариант.
← →
Rel_ (2003-07-08 10:45) [13]to Sandman25
вы правы - я так и сделал , просто, казалось, почему бы сразу не объявит множество стрингов.
спасибо за помощь !!!.
to Radionov Alexey ©
можно и бинарным поиском - пользовался, но ведь энто более сложное решение - у меня задачка примитивная - не хотелось городить. (всё равно, огромное спасибо за участие !!!!!)
← →
Sandman25 (2003-07-08 10:49) [14]Кстати, можно использовать FieldByName("name").AsInteger вместо StrToInt(FieldByName("name")AsString). Будет немного скорее работать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.074 c