AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler mit eigener Procedure

Ein Thema von ferby · begonnen am 18. Okt 2004 · letzter Beitrag vom 18. Okt 2004
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:25
Hi,

Mir ist leider kein besserer Titel eingefallen...

Also zu meinen Problem, ich habe eine eigene procedure geschrieben:

Delphi-Quellcode:
procedure quicksort (var l,r:integer);
var
i,j,p:integer;
begin

  i:=l;
  j:=r;

  if j>i then
  begin
    p:=eingabe[(j+1) div 2];
    repeat
      while eingabe[i]<p do inc(i);
      while eingabe[j]>p do dec(j);

      if i<=j then
      begin
        tausche (eingabe[i],eingabe[j]);
        inc(i);
        dec(j);
      end;

    until i>j;
  end;

  if j>l then quicksort(l,j);
  if i<r then quicksort(l,r);

end;
die ich jetzt mit

quicksort(1,10); aufzurufen.

eingabe ist global mit eingabe:array [1..10] of integer; definiert.

Also wenn ich jetzt das programm starte springt delphi zu quicksort(1,10); und die Fehlermeldung kommt:

[Fehler] Unit1.pas(135): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen

ich weiß leider nicht was ich mit dieser Fehlermeldung machen soll.

Kann mir wer helfen???
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:28
das kann nicht gehen, da du direkt zwei zahlen übergibst

versuche es so:

Delphi-Quellcode:
var
  a, b : integer;
begin
  a := 1;
  b := 10;
  quicksort(a,b);
Wenn du VAR in der Procedure verwendest, kannst du nicht zwei Zahlen übergeben

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:29
Hi,

Danke, aber ich versteh nicht warum das so ist, müsste nicht beides gehen????
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#4

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:30
nimm das var aus der prozedur-deklaration raus:

procedure quicksort (l,r:integer);
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:30
Hoi

Mach aus dem var vor den Parametern ein const.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#6

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:31
das var bedeutet doch, dass du direkt in die Variable "zurückschreibst"
1 und 10 sind keine Variablen, daher geht das nicht!!!

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 16:37
Hi,

O.k jetzt gehts aber jetzt hab ich ein grösseres Problemm.

Im Anhang ist das Programm.

Zuerst müssen im Programm 10 Zahlen eingegeben werden.

Dann kann man im Menü auswählen wie sotiert werden soll.
Buublesort funktioniert, aber Quicksort geht nicht:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EStackOverflow aufgetreten. Meldung: 'Stack-Überlauf'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------


Könnts ihr euch mal anschauen wie der Fehler zustande kommt?
Angehängte Dateien
Dateityp: zip 1_arbeit.zip (221,3 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 17:43
Hier mal die grundelegende Quicksort-Funktion, diese kannst du sehr leicht in deinen Code einbauen, ich denke, das schaffst du dann schon.

Delphi-Quellcode:
//2 Zahlen tauschen
procedure TForm1.Swap(var Zahl1, Zahl2: integer);
var h: integer;
begin
  h := Zahl1;
  Zahl1 := Zahl2;
  Zahl2 := h;
end;

//Quicksort
procedure TForm1.QuickSort(var Tab: TArray; HighIndex: integer);
//Tab: Array mit den unsortierten Zahlen
//HighIndex: Anzahl der Zahlen/Datensätze, die sortiert werden sollen

  procedure Sort(links, rechts: integer);
  var i, j, x: integer;
  begin
    i := links;
    j := rechts;
    x := Tab[(links + rechts) div 2];
    repeat
      while Tab[i] < x do inc(i);
      while Tab[j] > x do dec(j);
      if i <= j then
      begin
        Swap(Tab[i], Tab[j]);
        inc(i);
        dec(j);
      end;
    until i > j;
    if links < j then Sort(links, j);
    if i < rechts then Sort(i, rechts);
  end;
begin
  Sort(1, HighIndex);
end;
Ich hoffe, du verstehst das.

Wichtig ist hier, dass du einen Typ TArray hast:

Delphi-Quellcode:
type
  TArray = array[1..20] of integer;
und natürlich die Deklaration der Variablen:

Delphi-Quellcode:
var
  Tab: TArray;
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 18:01
Hallo,

Danke jetzt gehts, versteh nur noch nicht ganz was bei mir der Fehler war.....


Weißt du eigentlich was ein: Heapsort ist???
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Fehler mit eigener Procedure

  Alt 18. Okt 2004, 18:35
Hi!

Zitat von ferby:
Weißt du eigentlich was ein: Heapsort ist???
Schau mal inDaniel's Tutorial da wird das schön erklärt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:42 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