Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

входные данныйе одной функции разных типов....   Найти похожие ветки 

 
sectus ©   (2004-07-14 20:16) [0]

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;


 
Anatoly Podgoretsky ©   (2004-07-14 20:21) [1]

Это лучше не в ветку, а на какой ни будь файловый архив.


 
sectus ©   (2004-07-14 20:36) [2]

это все wisekaa он(она, оно) посоветовал(а,о)....


 
Palladin ©   (2004-07-14 20:41) [3]

Ты код коллекционируешь?


 
sectus ©   (2004-07-15 09:43) [4]

если честно, то вопрос не понял....


 
Anatoly Podgoretsky ©   (2004-07-15 12:00) [5]

sectus ©   (15.07.04 09:43) [4]
Вопрос в том зачем ты этот код опубликовал, такие вещи надо помещать в специализированые места, здесь он все равно уйдет в архив.


 
sectus ©   (2004-07-16 20:33) [6]

ладно... больше шума подняли... пытался я задавать вопрос... все : а как это то? а конкретнее?
вот код, что может быть конкретнее... а теперь код слишком большой.... а просто посмотреть всем лень...

а на вопрос я сам себе отвечу...
нельзя сравнивать такие типы знаком равно или любым другим...
эх...


 
Mim1 ©   (2004-07-16 21:38) [7]


> [6] sectus ©   (16.07.04 20:33)

А задавать вы его пробывали? чтобы ответить мог кто нибудь ктото кроме вас?
:)
А то как то странно получается сам спросил сам ответил.

Да и вообще выделяйте код специяальными тегами, читаться будет гараздо лучше. Вопрос задавайте в начале или в конце сообщения.



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
3-1089203075
Fast
2004-07-07 16:24
2004.08.01
как поймать момент когда DBGrid переходит в режим редактирования


14-1089200045
Тимохов
2004-07-07 15:34
2004.08.01
Runtime пакеты.


14-1089944676
StarCon
2004-07-16 06:24
2004.08.01
Дельфи 8


14-1090057824
Baron
2004-07-17 13:50
2004.08.01
Опрос и обсуждение.


1-1089845649
Vetalich
2004-07-15 02:54
2004.08.01
Создание папки