INARRAY

0

napisałem funkcyjke która miała by robić to samo zo PHP IN_ARRAY czyli przeszukiwac tablice w poszukiwaniu danego elementu:
<delphi>

<function InArray(src: array of Variant; const seek: Variant): boolean;
var
i: byte;
begin
result := false;

for i := low(src) to high(src) do
begin
if src[i] = seek then
result := true;
end;
end;/delphi>

tyle że nie moge do niej wsadzić przy wywołaniu jakiejś tablicy bo pisze że są niekompatybiln typy: array i dynamic array
pomóżcie

0

tak z ciekawości wsadziłem Twój kod do Delphi i poszło, ładnie mi wypisuje wynik.

var
  tab: array[0..1] of variant; //sprawdzana tablica
....
....
  tab[1]:='a';
  showmessage(BoolToStr(InArray(tab,'a')));
0
function InArray(buf,seek:pointer;items,itemsize:integer):boolean;
type pb=^byte; // ^char; ^shortint;
var
  p:pbyte;
  i:integer;
label lab;
begin
  while longbool(items)do
    begin
      dec(items);
      i:=itemsize;
      p:=pbyte(seek);
      while longbool(i)do
        begin
          dec(i);
          if longbool(pbyte(buf)^ xor p^)then goto lab;
          inc(cardinal(p));
          inc(cardinal(buf));
        end;
      InArray:=true;
      exit;
      lab:
    end;
  InArray:=false;
end;

var a:array[1..2]of integer;
const c:integer=$12345678;
begin
  a[1]:=c;
  a[2]:=0;
  writeln(inarray(@a,@c,sizeof(a),sizeof(integer)));
  a[1]:=c-1;
  writeln(inarray(@a,@c,sizeof(a),sizeof(integer)));
  readln;
end.
int InArray(void* buf,void* seek,int items,int itemsize){
  while(items--){
    int i=itemsize;
    char* p=(char*)seek;
    while(i--)if(*((((char*)buf)++))^(*(p++)))goto lab;
    return 1;
    lab:
  }
  return 0;
end;

// Napisałem dla porownania, z ciekawości jakby to samo wyglądało w c

1 użytkowników online, w tym zalogowanych: 0, gości: 1