Avatar billede kingguro.dk Nybegynder
18. november 2003 - 20:29 Der er 11 kommentarer og
1 løsning

Kan jeg sende et array som parameter`?

Er det muligt at sende et Array som paremeter til en funkction/procedure/constructor???
f.eks.

function TjuHej(test : array [1..10000] of TColor) : integer;
Avatar billede arne_v Ekspert
18. november 2003 - 20:36 #1
Ja - selvfølgelig an du det.

Lav det som:

type
  TColor10000 = array [1..10000] of TColor;

...

function TjuHej(test : TColor10000) : integer;
Avatar billede kingguro.dk Nybegynder
18. november 2003 - 20:44 #2
Hmmm kan ikke lige få det til at virke.. Det er forresten en constructor jeg skal bruge det på og ikke en funktion?
Avatar billede kingguro.dk Nybegynder
18. november 2003 - 20:46 #3
Lige meget, fik det til at virke!!
Avatar billede kingguro.dk Nybegynder
18. november 2003 - 20:46 #4
Tak
Avatar billede arne_v Ekspert
18. november 2003 - 20:47 #5
Du erklærer den så:

var
  x : TColor10000;

og kalder med:

thuhej(x)

- det burde ikke betyde noget at det er en constructor.
Avatar billede kingguro.dk Nybegynder
18. november 2003 - 21:01 #6
Men er det muligt at sende et array af variabel størrelse??
Avatar billede arne_v Ekspert
18. november 2003 - 21:37 #7
Ja.

Du erklærer den bare som array uden dimensioner og så kan du kalde
low og high til at finde grænserne på arrayet.
Avatar billede kingguro.dk Nybegynder
18. november 2003 - 21:45 #8
Kan du give et eksempel??
Avatar billede arne_v Ekspert
18. november 2003 - 21:54 #9
Er det OK at jeg genbruger et eksempel ?
Avatar billede arne_v Ekspert
18. november 2003 - 21:54 #10
Jeg lavede det her eksempel til soetering af 2 dimensionelt array:

program MultiDimSort;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  mda = array of array of integer;

procedure init(var a : mda; n, m : integer);

var
  i, j : integer;

begin
  randomize;
  setlength(a, n);
  for i := low(a) to high(a) do begin
      setlength(a[i], m);
      for j := low(a[i]) to high(a[i]) do begin
        a[i,j] := random(100);
      end;
  end;
end;

procedure print(var a : mda);

var
  i, j : integer;

begin
  for i := low(a) to high(a) do begin
      for j := low(a[i]) to high(a[i]) do begin
        write(' ', a[i,j]);
      end;
      writeln;
  end;
end;

procedure sort(var a : mda);

var
  i, j, k, tmp : integer;

begin
  for i := low(a) to (high(a) - 1) do begin
      for j := (i + 1) to high(a) do begin
        if a[i,3] > a[j,3] then begin
            for k := low(a[i]) to high(a[i]) do begin
              tmp := a[i,k];
              a[i,k] := a[j,k];
              a[j,k] := tmp;
            end;
        end;
      end;
  end;
end;

var
  a : mda;

begin
  init(a, 10, 5);
  writeln('before');
  print(a);
  sort(a);
  writeln('after');
  print(a);
end.
Avatar billede arne_v Ekspert
30. november 2003 - 23:06 #11
OK ?
Avatar billede kingguro.dk Nybegynder
30. november 2003 - 23:18 #12
Det var perfekt :) Tak for det.. Undskyld at jeg glemte at give point!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester