AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Die Typen der tatsächlichen und formalen Var-Parameter müsse
Thema durchsuchen
Ansicht
Themen-Optionen

Die Typen der tatsächlichen und formalen Var-Parameter müsse

Ein Thema von Arathok · begonnen am 29. Mai 2008 · letzter Beitrag vom 2. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Arathok

Registriert seit: 29. Mai 2008
Ort: Saalfeld
13 Beiträge
 
#1

Die Typen der tatsächlichen und formalen Var-Parameter müsse

  Alt 29. Mai 2008, 12:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#2

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

  Alt 29. Mai 2008, 12:56
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...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Alt 29. Mai 2008, 12:57     Erstellt von gammatester
Dieser Beitrag wurde von Phoenix gelöscht. - Grund: Unnötiges OT, und ausserdem wäre so etwas die Aufgabe eines Moderators.
Arathok

Registriert seit: 29. Mai 2008
Ort: Saalfeld
13 Beiträge
 
#3

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

  Alt 29. Mai 2008, 13:03
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]));
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

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

  Alt 29. Mai 2008, 13:03
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]
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#5

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

  Alt 29. Mai 2008, 13:06
Nochmal, und zwar bitte ganz langsam. Einmal vorher TIEEF Luft holen
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Arathok

Registriert seit: 29. Mai 2008
Ort: Saalfeld
13 Beiträge
 
#6

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

  Alt 29. Mai 2008, 13:09
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...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 29. Mai 2008, 13:11
1. Ja
2. Nein, sondern ein Element des Arrays, nicht das Array selbst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#8

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

  Alt 29. Mai 2008, 13:16
Du musst a reinwerfen, nicht a[i]. Denn a[i] ist das i-te Element AUS dem Array a.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 29. Mai 2008, 13:18
Hatte ich das nicht gesagt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

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

  Alt 29. Mai 2008, 13:19
Nur indirekt

(indirekt = ohne seine Namen der Variablen )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
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