![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
входные данныйе одной функции разных типов.... [D5]
sectus © (2004-07-14 20:16:00)unit GameFunc;
interface
type TDynamicVArray = array of Variant;
function LookIn(sub:variant;a:TDynamicVArray):integer; //стмотрим, есть ли элемент в "множестве", выдаем обратно номер элемента, или -1
procedure Add_Element(e:variant;var a:TDynamicVArray); //если Asset=true, то элемент добавляется, если его не было, False-добавляется в любом случае
procedure Add_AnyWay(e:variant;var a:TDynamicVArray);
procedure Delete_Element(e:variant; var a:TDynamicVArray);
function Sum(a,a1:TDynamicVArray):TDynamicVArray;
function Cross(a,a1:TDynamicVArray):TDynamicVArray;
function Difference(a,a1:TDynamicVArray):TDynamicVArray;
implementation
function LookIn(sub:variant;a:TDynamicVArray):integer;
var i:integer;
begin
i:=-1; //на случай, если массив нулевой
while (i<length(a)-1) do //бежим от начала, до конца массива
begin
inc(i);
if a[i]=sub then //если элемент найден
begin
result:=i; //возвращаем его порядковый номер
break; //прерываем цикл поиска
end
else result:=-1; //если элемент не найден - возвращаем -1
end;
end;
procedure add_element(e:variant; var a:TDynamicVArray);
begin
if length(a)<=0 then //если массив пока нулевой
begin
setlength(a,1); //устанавливаем длину массива равной 1
a[0]:=e; //присваиваем первому елементу требуемое значение
end
else
if LookIn(e, a)=-1 then //если массив ненулевой, то проверяем, есть ли там уже это значение
begin
setlength(a,length(a)+1); //если нет-увеличиваем длину массива
a[length(a)-1]:=e; //присваиваем последнему элементу требуемой значение
end
end;
procedure add_AnyWay(e:variant; var a:TDynamicVArray);
begin
if length(a)<=0 then //если массив пока нулевой
begin
setlength(a,1); //устанавливаем длину массива равной 1
a[0]:=e; //присваиваем первому елементу требуемое значение
end
else
begin
setlength(a,length(a)+1); //если нет-увеличиваем длину массива
a[length(a)-1]:=e; //присваиваем последнему элементу требуемой значение
end
end;
procedure delete_element(e:variant; var a:TDynamicVArray);
begin
if LookIn(e,a)>=0 then //если такой элемент в "множестве" найден
begin
a[LookIn(e,a)]:=a[length(a)-1]; //присваиваем, убитому элементу значение последнего элемента
setlength(a, length(a)-1); //сокращаем массив на один элемент
end;
end;
function sum(a,a1:TDynamicVArray):TDynamicVArray;
var i:integer;
begin
result:=a;
for i:=0 to length(a1)-1 do
if (LookIn(a1[i],a)=-1) then
begin
setlength(result, length(result)+1);
result[length(result)-1]:=a1[i];
end;
end;
function cross(a,a1:TDynamicVArray):TDynamicVArray;
var i:integer;
begin
for i:=0 to length(a1)-1 do
if (LookIn(a1[i],a)>=0) then
begin
setlength(result, length(result)+1);
result[length(result)-1]:=a1[i];
end;
end;
function difference(a,a1:TDynamicVArray):TDynamicVArray;
var i:integer;
begin
result:=a;
for i:=0 to length(a1)-1 do
delete_element(a1[i], result);
end;
end.
это юнит для работы с массивами...
но работать он будет с масссивами типа вариант, а мне нужно чтобы с любыми типами работали эти функции и процедуры...
вот например с таким типом:
type TPixel=record
item_there:boolean;
item_id:integer;
item_see:integer;
end;
Mim1 (2004-07-16 21:38:00) [1]
> [6] sectus © (16.07.04 20:33)
А задавать вы его пробывали? чтобы ответить мог кто нибудь ктото кроме вас?
:)
А то как то странно получается сам спросил сам ответил.
Да и вообще выделяйте код специяальными тегами, читаться будет гараздо лучше. Вопрос задавайте в начале или в конце сообщения.
sectus (2004-07-16 20:33:00) [2]ладно... больше шума подняли... пытался я задавать вопрос... все : а как это то? а конкретнее?
вот код, что может быть конкретнее... а теперь код слишком большой.... а просто посмотреть всем лень...
а на вопрос я сам себе отвечу...
нельзя сравнивать такие типы знаком равно или любым другим...
эх...
Anatoly Podgoretsky (2004-07-15 12:00:00) [3]sectus © (15.07.04 09:43) [4]
Вопрос в том зачем ты этот код опубликовал, такие вещи надо помещать в специализированые места, здесь он все равно уйдет в архив.
sectus (2004-07-15 09:43:00) [4]если честно, то вопрос не понял....
Palladin (2004-07-14 20:41:00) [5]Ты код коллекционируешь?
sectus (2004-07-14 20:36:00) [6]это все wisekaa он(она, оно) посоветовал(а,о)....
Anatoly Podgoretsky (2004-07-14 20:21:00) [7]Это лучше не в ветку, а на какой ни будь файловый архив.