Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Die Typen der tatsächlichen und formalen Var-Parameter müsse (https://www.delphipraxis.net/114676-die-typen-der-tatsaechlichen-und-formalen-var-parameter-muesse.html)

Arathok 29. Mai 2008 11:48


Die Typen der tatsächlichen und formalen Var-Parameter müsse
 
da wir grad in der schule sortierverfahren haben hba ich mal ein programm zum quicksort gemacht aber ich bekomme ständig diese fehlermeldung...

Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen(116)(4.letzte ZEile)

hier der text:
Delphi-Quellcode:
unit Sort;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }

  end;
type ta=ARRay[1..100] of integer;
var
  Form1: TForm1;
  n:integer;
   a:array[1..100] of integer;
   procedure bubble(var a:ta; n:integer);
   PROCEDURE Quicksort(VAR a:ta; p,r:INTEGER);
   Function Partition(VAR a:ta; p,r:INTEGER):INTEGER;
   procedure tausch(var x,y:integer);
implementation

{$R *.dfm}

procedure tausch(var x,y:integer);
var z:integer;
begin
   x:=y;
   Y:=z;
   z:=x;
end;

Function Partition(VAR a:ta; p,r:INTEGER):INTEGER;
VAR t,x,i,j:INTEGER;

  BEGIN
  x:=a[p];
  i:=p-1;
  j:=r+1;
  WHILE i<j DO
    BEGIN
    REPEAT
      j:=j-1;
    UNTIL a[j]<=x;
      REPEAT
      i:=i+1;
      UNTIL x <= a[i];
      IF i<j THEN tausch(a[i],a[i]) (*Tausch der Elemente *)
      ELSE RESULT:= j;
    END;
END ;


PROCEDURE Quicksort(VAR a:ta; p,r:INTEGER);
VAR q:INTEGER;
BEGIN
  IF p<r THEN
  BEGIN
  q:=Partition(a,p,r);
  Quicksort(a,p,q);
  Quicksort(a,q+1,r);
  END;
END;

procedure bubble(var a:ta; n:integer);
var x,i,j:integer;

   begin
   For j:=1 to n do
    For i:=1 to n-1 do
    If a[i] > a[i+1] then
    begin
    x:=a[i];
    a[i]:=a[i+1];
    a[i+1]:=x;
    End;
   end;

procedure TForm1.Button2Click(Sender: TObject);
var i,n:integer;
begin
n:=memo1.lines.count;
for i:=1 to n do
  a[i]:=StrtoInt(memo1.Lines[i-1]);

end;

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
memo1.clear;
memo2.clear;
for i:=1 to 10 do
memo1.lines.add(INtTOStr(random (20)))

end;

procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
begin
for i:=1 to n do
quicksort(memo1.lines,n,x);//DIE ZEILE HIER ISSES!!!
memo2.lines.add(INtToStr(a[i]));
end;

end.

Phoenix 29. Mai 2008 11:56

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Guck Dir Doch mal die Deklaration an.

Beantworte bitte folgende Fragen:

Was erwartet Deine Quicksort-Prozedur als ersten Parameter?
Was übergibst Du im Aufruf als ersten Parameter?

Wenn die Anwtort auf meine erste und die zweite Frage unterschiedlich sind, dann übergibst Du nicht das, was die Prozedur erwartet.

Edit nachtrag zum einfachen Spicken:

Delphi-Quellcode:
type ta=ARRay[1..100] of integer;
var
  Form1: TForm1;
  n:integer;
   PROCEDURE Quicksort(VAR a:ta; p,r:INTEGER); // vat a: ta
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
begin
  for i:=1 to n do
    quicksort(memo1.lines,n,x);//DIE ZEILE HIER ISSES!!!
  memo2.lines.add(INtToStr(a[i]));
end;
Du hast da übrigens noch ein gaaaanz anderes problem:
Wenn Du i von 1 bis n laufen lassen willst, dann solltest Du dem n vorher auch einen Wert zuweisen...

Arathok 29. Mai 2008 12:03

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
so hab jetzt alles geändert aber trotzdem is der fehler noch da..
Delphi-Quellcode:
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
begin
n:=memo1.lines.count;//DAS HIER!
for i:=1 to n do
quicksort(a[i],n,x);//UND HIER!
memo2.lines.add(INtToStr(a[i]));

Die Muhkuh 29. Mai 2008 12:03

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Es scheint hier auch ganz schönes Durcheinander mit Variablennamen zu herrschen.

Außerdem fehlt bei der For-Schleifen noch ein begin und ein end.

[edit] Die Funktion erwartet ein Array vom Typ "ta" und nicht nur einen einzelnen Wert. [/edit]

[edit2] Schau mal noch hier vorbei. [/edit]

Phoenix 29. Mai 2008 12:06

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Nochmal, und zwar bitte ganz langsam. Einmal vorher TIEEF Luft holen :zwinker:
Zitat:

Zitat von Phoenix
Was erwartet Deine Quicksort-Prozedur als ersten Parameter?
Was übergibst Du im Aufruf als ersten Parameter?

Bitte beantworte die beiden Fragen mal schriftlich hier im Thread. ;-)

Arathok 29. Mai 2008 12:09

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Was erwartet Deine Quicksort-Prozedur als ersten Parameter?
Was übergibst Du im Aufruf als ersten Parameter?
1. ein array vom typ ta
2.in der geänderten version das array(a vom typ ta)?
edit in der geänderten version hab ich doch a[i] reingeschrieben???
reicht das nich ? naja ich guck nochmal im tutorial nach...

DeddyH 29. Mai 2008 12:11

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
1. Ja
2. Nein, sondern ein Element des Arrays, nicht das Array selbst.

Phoenix 29. Mai 2008 12:16

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Du musst a reinwerfen, nicht a[i]. Denn a[i] ist das i-te Element AUS dem Array a.

DeddyH 29. Mai 2008 12:18

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Hatte ich das nicht gesagt? :stupid:

Die Muhkuh 29. Mai 2008 12:19

Re: Die Typen der tatsächlichen und formalen Var-Parameter m
 
Nur indirekt :stupid:

(indirekt = ohne seine Namen der Variablen :stupid: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Seite 1 von 2  1 2      

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