Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Matrix 2 (https://www.delphipraxis.net/4773-matrix-2-a.html)

n00b_on_knees 11. Mai 2003 16:13


Matrix 2
 
ich habe noch eine frage zu einem ähnlichen programm wie in dem letzten matrix tread, genauergesagt eine erweiterung zu diesem. es wird angezeigt : "die typen der tatsächlichen und formalen var-parameter müssen übereinstimmen." wenn ich nur wüsste was das bedeuten soll ^^". ich poste mal wieder den delphisource code, hoffe ihr könnt mir helfen! thx im vorraus, die kommentare müssten aufschluss geben was das programm macht.

Delphi-Quellcode:

 //*******************************************************//
//                                                        //
// Name: fDASTA202                                       //
// Autor: n00b on knees                                  //
// Datum: 10.05.2003                                      //
// Zweck: Liest eine Zahl N in, erstellt eine Matrix     //
//        mit NxN Reihen, liest X und Y ein, deren       //
//        Zeilennummern der Matrix dann vertauscht werden.//
//                                                        //
//********************************************************//

unit fdasta202;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
    TFeld = array [1..10, 1..10] of integer;
  TForm1 = class(TForm)
    mmAus: TMemo;
    btStart: TButton;
    Label1: TLabel;
    edN: TEdit;
    X: TLabel;
    edX: TEdit;
    Label2: TLabel;
    edY: TEdit;
    btVertauschen: TButton;
    procedure ShowMatrix(var a: integer; var N: TFeld);
    procedure FillMatrix(var AFeld: TFeld; N: integer);
    procedure btStartClick(Sender: TObject);
  private
    function GetN: integer;
    function GetLine (var N: integer; var AFeld: TFeld): TFeld;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//********************************************************//
//                                                        //
// Name: GetN                                           //
// Datum: 10.05.2003                                      //
// Zweck: Liest die Zahl N ein, und prüft ob sie im      //
//        Bereich von 2 bis 10 liegt.                    //
//                                                        //
//********************************************************//

function TForm1.GetN: integer;
//Variablendeklaration
var
  N: integer;
begin
  //Einlesen
  N:=StrToInt(edN.Text);
  //Wenn N im Bereich von 2 bis 10 liegt, dann
  if (N > 1) and ( N <= 10) then
    //Rückliefere N
    result:= N
  else
    result:=random(9)+2;
end;

//********************************************************//
//                                                        //
// Name: FillMatrix                                     //
// Datum: 10.05.2003                                      //
// Zweck: Füllt das mehrdimensionale Array mit           //
//        Zufallszahlen von 0 bis 99.                    //
//                                                        //
//********************************************************//

procedure TForm1.FillMatrix(var AFeld: TFeld; N: integer);
//Variablendeklaration
var
  i, j: integer;
begin
  //Kopfgesteurte Schleife, wobei i die 3 Zeilen sind.
  for i:= 1 to N do
    //Kopfgesteuerte Schleife, wobei j die 6 Spalten sind.
    for j:=1 to N do
      //fügt jedem Feldelement eine Zufallszahl von 0 bis 9 zu.
      AFeld[i, j]:= random(99)+1;
end;

//********************************************************//
//                                                        //
// Name: ShowMatrix                                     //
// Datum: 10.05.2003                                      //
// Zweck: Gibt das mehrdimensionale Feld aus.            //
//                                                        //
//********************************************************//

procedure TForm1.ShowMatrix(var a: integer; var N: TFeld);
//Variablendeklaration
var
  i, j: integer;
begin
  //leert das Memofeld
  mmAus.Clear;
  //Beide folgenden Schleifen sind zur Formatierten Ausgabe in der Tabellenart
  for i:=1 to a-1 do
  begin
    mmAus.Lines.Add(format('%3d. Reihe: ',[i]));
    for j:=1 to a-1 do
      mmAus.Lines[i]:= mmAus.Lines[i]+format('%3d',[N[i,j]]);
  end;
end;

//********************************************************//
//                                                        //
// Name: GetLine                                        //
// Datum: 10.05.2003                                      //
// Zweck: Liest X und Y ein, überrprüft ob diese im      //
//        richtigen Bereich liegen, und vertauscht       //
//        die Zeilen mit den Nummern.                    //
//                                                        //
//********************************************************//

function TForm1.GetLine (var N: integer; var AFeld: TFeld): TFeld;
//Variablendeklaration
var
  x, y, i: integer;
  Temp: array [1..10] of integer;
  begin
  //Einlesen der Variablen
  x:= StrToInt(edX.Text);
  y:= StrToInt(edY.Text);
  //Wenn X und Y kleiner gleich N, und größer 1 sind, dann
  if (x <= N) and (y <= N) and (x > 1) and (y > 1) then
    //Kopfegesteuerte Schleife, von 1 bis N um die Zeilen zu vertauschen
    for i:=1 to N do
    begin
      Temp[i]:= AFeld[x, i];
      AFeld[x,i]:= AFeld[y,i];
      AFeld[y,i]:= Temp[i];
    end;
  //Liefert das Feld zurück
  result:= AFeld;
end;    


procedure TForm1.btStartClick(Sender: TObject);
//Variablendeklaration
var Feld: TFeld;
    N: integer;
begin
  //Ruft alle Unterprogramme auf
  N:= Getn;
  FillMatrix(N, Feld);
  ShowMatrix(N, Feld);//Hier wird der Fehler angezeigt
  Feld:= GetLine(N, Feld);
  ShowMatrix(N, Feld);
end;
end.

n00b_on_knees 11. Mai 2003 16:21

die frage hat sich jetzt bereits im altem tread erledigt, wenn ein moderator so nett wäre, könnte er diesen tread bitte löschen oder schließen?

Luckie 11. Mai 2003 16:38

Hier wird nichts geschlosse. Aber du wirst ermahnt. :mrgreen: Könntest du das nächste mal einen so langen Quellcode als Anhang anhängen? Da kannst du dann sogar das ganze Projekt als Archiv reinpacken. Das wäre dann ein toller Service für andere zur Fehler suche für dich. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz