Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mein Sortierprogramm funktioniert nicht!!! (https://www.delphipraxis.net/103617-mein-sortierprogramm-funktioniert-nicht.html)

DeddyH 18. Nov 2007 19:11

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Der Source steht doch in der o.a. Demo (zumindest Quicksort).

deepdragon 18. Nov 2007 19:14

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Zitat:

Zitat von DeddyH
Der Source steht doch in der o.a. Demo (zumindest Quicksort).

ja aber dann hab ich den kopiert also in mein projekt reinkopiert und dann hat er wieder rumgemeckert... :(

mkinzler 18. Nov 2007 19:16

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Es hat auch niemnad gesagt du sollst den Code kopieren, sondern verstehn :zwinker:

DeddyH 18. Nov 2007 19:17

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Delphi-Quellcode:
  procedure QuickSort(var A: array of Integer; iLo, iHi: Integer);
  var
    Lo, Hi, Mid, T: Integer;
  begin
    Lo := iLo;
    Hi := iHi;
    Mid := A[(Lo + Hi) div 2];
    repeat
      while A[Lo] < Mid do Inc(Lo);
      while A[Hi] > Mid do Dec(Hi);
      if Lo <= Hi then
      begin
        //VisualSwap(A[Lo], A[Hi], Lo, Hi);
        T := A[Lo];
        A[Lo] := A[Hi];
        A[Hi] := T;
        Inc(Lo);
        Dec(Hi);
      end;
    until Lo > Hi;
    if Hi > iLo then QuickSort(A, iLo, Hi);
    if Lo < iHi then QuickSort(A, Lo, iHi);
    //if Terminated then Exit; überflüssig, da Du keinen Thread verwendest
  end;
Aufruf dann mit QuickSort(DeinArray,Low(DeinArray),High(DeinArray) ). Das packst Du in die Ereignisroutine von ButtonQuicksortClick.

deepdragon 18. Nov 2007 19:21

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
  procedure QuickSort(var A: array of Integer; iLo, iHi: Integer);
  var
    Lo, Hi, Mid, T: Integer;
  begin
    Lo := iLo;
    Hi := iHi;
    Mid := A[(Lo + Hi) div 2];
    repeat
      while A[Lo] < Mid do Inc(Lo);
      while A[Hi] > Mid do Dec(Hi);
      if Lo <= Hi then
      begin
        //VisualSwap(A[Lo], A[Hi], Lo, Hi);
        T := A[Lo];
        A[Lo] := A[Hi];
        A[Hi] := T;
        Inc(Lo);
        Dec(Hi);
      end;
    until Lo > Hi;
    if Hi > iLo then QuickSort(A, iLo, Hi);
    if Lo < iHi then QuickSort(A, Lo, iHi);
    //if Terminated then Exit; überflüssig, da Du keinen Thread verwendest
  end;
Aufruf dann mit QuickSort(DeinArray,Low(DeinArray),High(DeinArray) ). Das packst Du in die Ereignisroutine von ButtonQuicksortClick.


Also wär das dann in meinem Fall:

procedure btnQuickSortClick(a[i],Low[i],High[i]);
?

also ich weiß es halt echt net so genau... sry...

DeddyH 18. Nov 2007 19:31

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Delphi-Quellcode:
procedure TForm1.btnQuickSortClick(Sender: TObject); //Methode von Form1
begin
  QuickSort(a,Low[a],High[a]); //Aufruf des Algos, wobei a dann das Array ist
end;

deepdragon 18. Nov 2007 19:51

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
procedure TForm1.btnQuickSortClick(Sender: TObject); //Methode von Form1
begin
  QuickSort(a,Low[a],High[a]); //Aufruf des Algos, wobei a dann das Array ist
end;

also das hab ich jetzt eingefügt aber er meint dann, dass "Quicksort" ein undefinierter Bezeichner ist...:(

mashutu 18. Nov 2007 20:17

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Zitat:

Zitat von deepdragon
Also wär das dann in meinem Fall:

procedure btnQuickSortClick(a[i],Low[i],High[i]);
?

Nein!!!! ARrrghhh
Zitat:

Zitat von deepdragon
also ich weiß es halt echt net so genau... sry...

Das sieht man.

btnQuicksortclick ist eine Methode des Buttons, die dem Ereignis Click zugeordnet ist.
Du kannst dafuer keine eigene Parameterliste definieren.

Du must von dort aus DEINE Quicksort aufrufen:
Delphi-Quellcode:
procedure btnQuickSortClick(Sender:TComponent);
begin
   quicksort(a[i],Low[i],High[i]);
end;
procedure Form1.QuickSort(a[i],Low[i],High[i]);
begin
[...]
end;

Namenloser 18. Nov 2007 20:23

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Klar, woher soll er die Funktion auch kennen? Du musst zuerst die Funktion deklarieren und implementieren, dann kannst du sie benutzen. Vielleicht wäre es am besten, wenn du zu dem Thema mal in die dsdt.info-Grundlagentutorials schaust?

[add]: roter kasten

mashutu 18. Nov 2007 20:34

Re: Mein Sortierprogramm funktioniert nicht!!!
 
Zitat:

Zitat von deepdragon
]

also das hab ich jetzt eingefügt aber er meint dann, dass "Quicksort" ein undefinierter Bezeichner ist...:(

Du musst latuernich vorher Quicksort im InterfaceTeil deklarieren...
Delphi-Quellcode:
type
   TForm1 = class(TForm)
              [...]
      procedure QSort(var A: array of Integer;iLow,iHigh:integer);

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr.
Seite 2 von 2     12   

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