Announcement

Collapse
No announcement yet.

Dringend: dynamische Arrays übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dringend: dynamische Arrays übergeben

    Hallo,<br>
    ich habe folgende Deklarationen:
    <code>
    <pre>
    TIntArray = array of integer;<br>

    Liste1 : TIntArray;
    Liste2 : TIntArray;
    Liste3 : TIntArray;
    <br>
    ...
    <br>
    ingendwo: SetLength(Liste1, 10); usw.
    <br>
    Und nun eine Prozedur:
    procedure rechne(liste1, var liste2, liste3 : TIntArray);
    ...
    </pre>
    </code>
    Nun zu meinem Problem, Delphi bringt folgende Fehlermeldung:<br>
    "Bei einem Variablenparameter muß das eigentliche Argument genau denselben Typ wie der formale Parameter aufweisen. " <br>
    Ich denke es liegt daran, dass ich dynamische Arrays verwende, denn mit der Deklaration: "TIntArray = array[0..9] of integer;" gehts.<br>
    Ich kann aber keine Grenzen für meine Arrays festlegen. Also, was muss ich ändern?<br><br> Mit freundlichen Grüsssen <br>Alex.

  • #2
    Hallo Alex,<br>die Variable für dynamisches Array ist ein Zeiger. Deshalb brachst Du die var Anweisung nicht.<br>:-) Jens Schuman

    Comment


    • #3
      Hallo,<br>
      meine Prozedur ist folgendermaßen deklariert:
      <br><br>
      procedure rechne(li1, var li2, li3 : TIntArray);
      <br><br>
      Aufrufen tue ich sie so:
      rechne(liste1, liste2, liste3);<br><br>
      Es ist egal, ob da "var" in der Argumentenliste steht oder nicht. Lasse ich es weg, dann erhalte ich die Fehlermeldung:"Inkompatible Typen".<br>
      Schade, wäre ja auch zu einfach.
      Haben sie vielleicht noch eine Idee? Oder habe ich was falsch gemacht?
      <br>
      Gruß Ale

      Comment


      • #4
        Hallo Alex,<br>folgender Code läuft bei mir einwandfrei.<br>
        <pre><font size="1" face="Verdana">
        unit Unit1;

        interface

        uses
        Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
        StdCtrls;

        type
        TIntArray = Array of Integer;

        TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        private
        { Private-Deklarationen }
        L1 : TIntArray;
        L2 : TIntArray;
        L3 : TIntArray;
        procedure rechne (L1,L2,L3 : TIntArray);
        public
        { Public-Deklarationen }
        end;

        var
        Form1: TForm1;

        implementation

        {$R *.DFM}

        procedure TForm1.Button1Click(Sender: TObject);
        begin
        rechne(L1,L2,L3);
        end;

        procedure TForm1.rechne(L1, L2, L3: TIntArray);
        begin
        // Mach was mit den Parametern
        end;

        procedure TForm1.FormCreate(Sender: TObject);
        begin
        SetLength(L1,10);
        SetLength(L2,10);
        SetLength(L3,10);
        end;

        procedure TForm1.FormDestroy(Sender: TObject);
        begin
        L1:=Nil;
        L2:=Nil;
        L3:=Nil;
        end;

        end.</font></pre>
        <br>:-) Jens Schuman

        Comment


        • #5
          Hallo Jens,
          vielen Dank! Jetzt läuft es bei mir auch. Es lag daran, dass ich die falsche Variable übergeben habe

          Comment

          Working...
          X