Einzelnen Beitrag anzeigen

sir_toby

Registriert seit: 19. Feb 2008
3 Beiträge
 
Delphi 2007 Professional
 
#1

Anfängerfrage- Werte von Array zu Array übergeben

  Alt 19. Feb 2008, 20:48
hallo zusammen!

versuche schon seit stunden werte von einem array in ein anderes (beides globale variablen unterschiedlicher typen) zu übergeben. das ist mir dann auch irgendwann gelungen aber nicht so wie ichs gerne hätte...so siehts jetzt aus:

Code:

type tvoxel = record
            nr : longint;
            x,
            y,
            z : integer;
            end;
var
  Form1: TForm1;

implementation

var pixels : array of integer;
    points : array of tvoxel;
    no : integer=1;
    xmax,
    ymax : integer;
{$R *.dfm}


procedure getpixelsleft(bitmap:tBitmap);
var i,j : integer;
    row : ^tRGBTriple;
begin
  setlength(pixels,bitmap.Height);
  for j := 0 to bitmap.Height - 1 do begin
     row := bitmap.ScanLine[j];
    for i := 10 to bitmap.Width - 10 do begin
      if (row^.rgbtRed=0) then begin
        pixels[j]:=i;
      end;
    inc(row)
    end;
  end;
 bitmap.Assign(bitmap);
end;


procedure getpixelsright(bitmap:tBitmap);
var i,j : integer;
    row : ^tRGBTriple;
begin
  setlength(pixels,bitmap.Height);
  for j := bitmap.Height - 2 downto 2 do begin
     row := bitmap.ScanLine[j];
    for i := bitmap.Width downto 0 do begin
      if (row^.rgbtRed=0) then begin
       pixels[j]:=i;
      end;
    inc(row)
    end;
  end;
 bitmap.Assign(bitmap);
end;


procedure pixelstopoints;
var j : integer;

begin
{ setlength(points, 1000);
  for j := 0 to ymax-1 do begin
   points[j].x:=pixels[j];
   points[j].y:=j;
   points[j].z:=pixels[j];
  end;
 }
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  image1.Picture.LoadFromFile('c:\z\3.bmp');
  getpixelsleft(image1.Picture.Bitmap);
  pixelstopoints;
 // getpixelsright(image1.Picture.Bitmap);
end;

procedure TForm1.Button2Click(Sender: TObject);
var n: integer;
begin
  setlength(points, 1000);
  ListBox1.Items.Clear;
  for n := 1 to (image1.Picture.Bitmap.height) do begin

     points[n].x:=pixels[n];
     points[n].y:=n;
     points[n].z:=pixels[n];

     Listbox1.Items.Add(InttoStr(n)+' : '+Inttostr(points[n].x));
  end;
end;
es sollen also werte von "pixels" an "points" übergeben werden, aber in der procedure pixelstopoints und nicht wie ich das jetzt gelöst habe in dem click-ereignis.
wie ich's eigentlich gerne hätte steht jetzt wie ihr seht in {}. was hab ich falsch gemacht?

thx @all, toby
  Mit Zitat antworten Zitat