![]() |
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. |
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:
Du hast da übrigens noch ein gaaaanz anderes problem:
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; Wenn Du i von 1 bis n laufen lassen willst, dann solltest Du dem n vorher auch einen Wert zuweisen... |
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])); |
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 ![]() |
Re: Die Typen der tatsächlichen und formalen Var-Parameter m
Nochmal, und zwar bitte ganz langsam. Einmal vorher TIEEF Luft holen :zwinker:
Zitat:
|
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... |
Re: Die Typen der tatsächlichen und formalen Var-Parameter m
1. Ja
2. Nein, sondern ein Element des Arrays, nicht das Array selbst. |
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.
|
Re: Die Typen der tatsächlichen und formalen Var-Parameter m
Hatte ich das nicht gesagt? :stupid:
|
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 18:55 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