AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Array Sortieren

Ein Thema von Plat · begonnen am 9. Jan 2004 · letzter Beitrag vom 13. Jan 2004
Antwort Antwort
Seite 3 von 5     123 45   
Plat

Registriert seit: 17. Dez 2003
40 Beiträge
 
#21

Re: Array Sortieren

  Alt 13. Jan 2004, 13:20
Zitat von Matze:
Zitat von Plat:
Hmmm das mit dem ListBox Sorted ist ja nur für die Oberfläche... das nützt mir ja nix, denn das Array bleibt ja so wie es ist.
Juhuu, ich hab Recht!

Jo, eine Seite weiter vorne steht ja, wie's geht.
Wie was geht?

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 :/
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#22

Re: Array Sortieren

  Alt 13. Jan 2004, 13:22
Zitat von Plat:
woe muss ich denn diese Prozedur umändern, damit ich sie auf String bzw. Buchstaben anwenden kann ?
Du mußt doch einfach überall wo integer auftauchen, dies in strings umbauen. Das sollte jeder können. Wie hast du das array eigentlich deklariert? fest, dynamisch?
Delphi-Quellcode:
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;
Ungetestet!!
  Mit Zitat antworten Zitat
Plat

Registriert seit: 17. Dez 2003
40 Beiträge
 
#23

Re: Array Sortieren

  Alt 13. Jan 2004, 13:25
Zitat von Tpercon:
Zitat von Plat:
woe muss ich denn diese Prozedur umändern, damit ich sie auf String bzw. Buchstaben anwenden kann ?
Delphi-Quellcode:
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;
Ungetestet!!

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
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#24

Re: Array Sortieren

  Alt 13. Jan 2004, 13:26
Da kannst du einfach 2 durch 1 ersetzen! Dies war wahrscheinlich nur da drin, damit man sieht wie es vorher aussah und nachher aussieht.
  Mit Zitat antworten Zitat
Plat

Registriert seit: 17. Dez 2003
40 Beiträge
 
#25

Re: Array Sortieren

  Alt 13. Jan 2004, 13:35
Zitat von Tpercon:
Da kannst du einfach 2 durch 1 ersetzen! Dies war wahrscheinlich nur da drin, damit man sieht wie es vorher aussah und nachher aussieht.
Ok danke euch !!!! Werds gleich mal testen... wenss Komplikationen gibt, weiß ich ja wo mir geholfen wird
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#26

Re: Array Sortieren

  Alt 13. Jan 2004, 13:44
Hallo,
das einfachste ist: Speichere die Records nicht in einem Array, sondern in TList.
TList hat eine Sort Methode. Näheres siehe OH.
  Mit Zitat antworten Zitat
Plat

Registriert seit: 17. Dez 2003
40 Beiträge
 
#27

Re: Array Sortieren

  Alt 13. Jan 2004, 13:47
da gibt's nochn Paar fehler...

1. [Fehler] Unit1.pas(152): Deklaration von 'Swap' unterscheidet sich von vorheriger Deklaration
  procedure TForm1.Swap(var i,j: String); 2. [Fehler] Unit1.pas(166): Inkompatible Typen
  If TelefonBArr[j]<TelefonBArr[i] then Swap(TelefonBArr[i],TelefonBArr[j]); 3. [Fehler] Unit1.pas(166): Zu viele Parameter
  If TelefonBArr[j]<TelefonBArr[i] then Swap(TelefonBArr[i],TelefonBArr[j]); 4. [Fehler] Unit1.pas(176): Inkompatible Typen: 'String' und 'TTelefonB'
  ListBox1.Items.Add(TelefonBArr[i]);

Edit:

@Jens: Muss sie aber in einem Array speichern
  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
 
#28

Re: Array Sortieren

  Alt 13. Jan 2004, 13:50
zu 1. procedure TForm1.Swap(var i,j: String); muss unter public, private oder, wo du's hast, genau so deklariert sein.


Einen String kann man per ACSII-Code sortieren, das hab ich schon in meinem ersten Post geschrieben.

Ord['s'] gibt z.B den Integer für den Buchstaben S zurück

[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]
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#29

Re: Array Sortieren

  Alt 13. Jan 2004, 13:51
Vielleicht hättest du mal von Anfang an gesagt, dass du mit einem record spielst.

Delphi-Quellcode:
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;
Und in das ListBox kannst du natürlich auch nur einen Eintrag vom record immer hinzufügen. Also:ListBox1.Items.Add(TelefonBArr[i].Name); Wenn das jetzt nicht deinen Gewolltem entspricht, dann poste mal endlich genua was du willst, bzw. die relevanten Stellen deines bisherigen Codes.
  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
 
#30

Re: Array Sortieren

  Alt 13. Jan 2004, 13:52
Zitat von Tpercon:
Vielleicht hättest du mal von Anfang an gesagt, dass du mit einem record spielst.
*zustimm* Alles umsonst
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:29 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