![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не полное сравнение данных
{RASkov} © (2007-06-10 20:10:00)
TTypeData = (1,2,3);
TData = record
D1, D2: Integer;
end;
TArrData: array of array of TData;
var ArrD: TArrData;
function VerifyData: Boolean;
var C, R: Integer; F: Boolean;
begin
Result:=False; F:=True;
for C := 0 to High(ArrD) do begin
for R := 0 to High(ArrD[C]) do begin
if (ArrD[C, R].D1<>2) and (ArrD[C, R].D2<>2) then Continue;
Result:=ArrD[C, R].D1=ArrD[C, R].D2;
F:=Result;
end;
if not F then Break;
end;
end;
Нужно сравнить внутри типа его данные, но не идеентично полностью, а только 2-ки
Например:
1 23 21
3 2111
22333
11111
и
3 21 23
3 2131
22111
33333
Считать одинаковыми т.е. вернуть функцией True
А вот так ситать, что они разные
1 23 21
3 2111
22333
11111
и
113 21 !
3 2111
22333
11111
и, соответственно вернуть False.
Вроде все правильно написал, но функция возвращает не верный результат. Чет никак не соображу где косяк....
Будте добры, подскажите алгоритм данной функции. Спасибо.
{RASkov} (2007-06-10 22:35:00) [1]> [5] begin...end © (10.06.07 21:17)
Спасибо. Вроде все верно.
begin...end (2007-06-10 21:17:00) [2]Исходный код тщательно не просматривал, но я бы сделал примерно так:
function VerifyData: Boolean;
var
C, R: Integer;
begin
Result := False;
for C := 0 to High(ArrD) do
for R := 0 to High(ArrD[C]) do
with ArrD[C, R] do
if ((D1 = 2) or (D2 = 2)) and (D1 <> D2) then
Exit;
Result := True
end
Впрочем, не исключено, что я неправильно понял вопрос...
{RASkov} (2007-06-10 20:38:00) [3]Одни данные (D1) такие, например:
11111
12221
12221
11111
Сравниваемые (D2) такие:
Вот так возвращает False
21111
12221
12221
11111
А так (все ниже) True
(Это и должно вернуть True)
11111
12221
12221
11111
(А следующие должны False, но возвращают True) :(
11112 <
12221
12221
11111
и
11111
11111
12222
11111
{RASkov} (2007-06-10 20:29:00) [4]> [2] Правильный Вася (10.06.07 20:16)
Да нет вроде.... тоже самое получается (
Правильный Вася (2007-06-10 20:16:00) [5]
F:=Result;
заменить на
F:= F andResult;
{RASkov} (2007-06-10 20:13:00) [6]Вообщето так :)
TTypeData = (1,2,3);
TData = record
D1, D2: TTypeData;
end;
но это не важно )