Re: Array Sortieren
Zitat:
Meine E I G E N T L I C H E Frage wurde in diesem Thread noch nicht beantwortet :) Denn ich hab nie was von Integer Werten gesprochen nur von Strings Würde ich diese Sortier Algos umändern können, dass man mit denen Striungs sortieren kann, würde ich net seit Tagen versuchen es zu packen :/ |
Re: Array Sortieren
Zitat:
Delphi-Quellcode:
Ungetestet!!
procedure TForm1.Swap(var i,j: string);
var h: string; begin h:=i; i:=j; j:=h; end; procedure TForm1.Sortiere; var i,j: integer; begin for i:= Low(tab) to High(tab) do for j:= i + 1 to High(tab) do begin if tab[j]<tab[i] then Swap(tab[i],tab[j]); end; end; procedure TForm1.ArrayFuellen; var i: integer; begin ListBox1.Clear; for i:=0 to 200 do begin tab[i] := InttoStr(random(101)); //Zufallszahlen von 0-100 ListBox1.Items.Add(tab[i]); end; end; procedure TForm1.SortClick(Sender: TObject); var i: integer; begin Sortiere; ListBox2.Clear; for i := Low(tab) to High(tab) do ListBox2.Items.Add(tab[i]); end; |
Re: Array Sortieren
Zitat:
Erst einmal DANKE, aber warum dieses ListBox2 ? Kann man es denn nicht so umändern, dass alles gleich in der ListBox1 geschiet ? Muss doch klappen ?!!! Aber das ist erstmal unwichtig, schaff ich auch alleine :thuimb: |
Re: Array Sortieren
Da kannst du einfach 2 durch 1 ersetzen! Dies war wahrscheinlich nur da drin, damit man sieht wie es vorher aussah und nachher aussieht.
|
Re: Array Sortieren
Zitat:
|
Re: Array Sortieren
Hallo,
das einfachste ist: Speichere die Records nicht in einem Array, sondern in TList. TList hat eine Sort Methode. Näheres siehe OH. |
Re: Array Sortieren
da gibt's nochn Paar fehler...
1. [Fehler] Unit1.pas(152): Deklaration von 'Swap' unterscheidet sich von vorheriger Deklaration
Delphi-Quellcode:
2. [Fehler] Unit1.pas(166): Inkompatible Typen
procedure TForm1.Swap(var i,j: String);
Delphi-Quellcode:
3. [Fehler] Unit1.pas(166): Zu viele Parameter
If TelefonBArr[j]<TelefonBArr[i] then Swap(TelefonBArr[i],TelefonBArr[j]);
Delphi-Quellcode:
4. [Fehler] Unit1.pas(176): Inkompatible Typen: 'String' und 'TTelefonB'
If TelefonBArr[j]<TelefonBArr[i] then Swap(TelefonBArr[i],TelefonBArr[j]);
Delphi-Quellcode:
ListBox1.Items.Add(TelefonBArr[i]);
Edit: @Jens: Muss sie aber in einem Array speichern :) |
Re: Array Sortieren
zu 1.
Delphi-Quellcode:
muss unter public, private oder, wo du's hast, genau so deklariert sein.
procedure TForm1.Swap(var i,j: String);
Einen String kann man per ACSII-Code sortieren, das hab ich schon in meinem ersten Post geschrieben.
Delphi-Quellcode:
gibt z.B den Integer für den Buchstaben S zurück
Ord['s']
[Edit]FAlls du's so sortierst, dann kannst du meinen Code so lassen und musst nix in einen string umändern, da ja nur nach den Integer-Werten weiterhin sortiert wird.[/Edit] |
Re: Array Sortieren
Vielleicht hättest du mal von Anfang an gesagt, dass du mit einem record spielst.
Delphi-Quellcode:
Und in das ListBox kannst du natürlich auch nur einen Eintrag vom record immer hinzufügen. Also:
private
procedure Swap(var i,j: integer); ... procedure TForm1.Swap(var i,j: integer); var dummy: TelefonBArrrecord; // wie auch immer dein record heißt begin //kann auch sein, dass man records nicht so einfach "übertragen" kann dummy := TelefonBArr[j]; TelefonBArr[i] := TelefonBArr[j]; TelefonBArr[j] := dummy; end; procedure TForm1.Sortiere; var i,j: integer; begin for i:= Low(tab) to High(tab) do for j:= i + 1 to High(tab) do begin if tab[j].Name< tab[i].Namethen Swap(i,j); end; end;
Delphi-Quellcode:
Wenn das jetzt nicht deinen Gewolltem entspricht, dann poste mal endlich genua was du willst, bzw. die relevanten Stellen deines bisherigen Codes.
ListBox1.Items.Add(TelefonBArr[i].Name);
|
Re: Array Sortieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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