Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array Sortieren (https://www.delphipraxis.net/14446-array-sortieren.html)

Plat 13. Jan 2004 13:57

Re: Array Sortieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Tpercon
Vielleicht hättest du mal von Anfang an gesagt, dass du mit einem record spielst.

*zustimm* Alles umsonst :pale:

Wie alles umsonst??? Tut mir leid, aber in meinem 3 - 5 post auf der ersten Seite sieht man doch, dass ich mit Records arbeite BlaBlaArr.Name...

Tpercon 13. Jan 2004 14:00

Re: Array Sortieren
 
OK, schau dir meinen letzten Beitrag an und schau ob das jetzt geht.

Dann hättest du vielleicht nochmal explizit deinen record Aufbau bitte posten sollen.

Plat 13. Jan 2004 14:23

Re: Array Sortieren
 
Hmmm...


Wenn ich nun diesen Record Fülle Bsp.: TelefonBArr[1].Name:='Bla'; und TelefonBArr[2].Name:='BlaBla';

dann auf Sortiere klicke wird die ListBox Cleared und dann passiert nix mehr ? :gruebel:

Tpercon 13. Jan 2004 14:26

Re: Array Sortieren
 
Poste doch mal bitte deinen bisherigen für uns zur Problemlösung relevanten Code!

Plat 13. Jan 2004 16:00

Re: Array Sortieren
 
Zitat:

Zitat von Tpercon
Poste doch mal bitte deinen bisherigen für uns zur Problemlösung relevanten Code!

ich glaube zu wissen wo der Fehler liegt.

if TelefonBArr[j].Name< TelefonBArr[i].Name then Swap(i,j); <= man kann keine FOR Schleifen variablen als var-parameter an andere Prozeduren übergeben ! (Sagt Delphi :D )

Matze 13. Jan 2004 16:30

Re: Array Sortieren
 
Jo, wenn dann so:
Delphi-Quellcode:
Swap(TelefonBArr[i], TelefonBArr[j])

Tpercon 13. Jan 2004 16:40

Re: Array Sortieren
 
Zitat:

Zitat von Plat
Zitat:

Zitat von Tpercon
Poste doch mal bitte deinen bisherigen für uns zur Problemlösung relevanten Code!

ich glaube zu wissen wo der Fehler liegt.

if TelefonBArr[j].Name< TelefonBArr[i].Name then Swap(i,j); <= man kann keine FOR Schleifen variablen als var-parameter an andere Prozeduren übergeben ! (Sagt Delphi :D )

Natürlich, das var muß in der Prozedur weg, dann geht's! Hatte ich auf die Schnelle nicht beachtet.

Matze's Vorschlag bringt nichts.

Plat 13. Jan 2004 16:41

Re: Array Sortieren
 
Zitat:

Zitat von Matze
Jo, wenn dann so:
Delphi-Quellcode:
Swap(TelefonBArr[i], TelefonBArr[j])

habe ich auch grade mal versucht aber geht auch nicht...

Fehler: Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen.

@Typercon: Jo jetzt kann man wieder compilen aber das problem mit der leeren ListBox besteht weiterhin

Tpercon 13. Jan 2004 16:44

Re: Array Sortieren
 
Natürlich nicht, nimm das var weg und der Teil wird gehen! Du sollst nur den Index übergeben.

Dann poste doch mal bitte deinen jetzigen Stand vom Code.

Bin bis Donnerstag wahrscheinlich nicht mehr online.

Plat 13. Jan 2004 16:51

Re: Array Sortieren
 
So hier mal der bisherige code:

Delphi-Quellcode:
type TDatum  = record
              Tag      : Byte;
              Monat    : Byte;
              Jahr     : Integer;
            end;

  TSchuelerRec = record
              Name     : String[25];
              Vorname  : String[25];
              Gebdatum : TDatum;
              VName    : String[25];
              MName    : String[25];
              EinschulD : TDatum;
              Klasse   : Char;
              Klassenst : Integer;
              Status   : Boolean;
            end;

  TSchuelerArr = Array[1..100] of TSchuelerRec;

var SchuelerArr : TSchuelerArr; //mir egal welchen arr namen ihr nimmt... :)

...
...
...

procedure TForm1.Swap(i,j: Integer);
var dummy: TSchuelerRec;
begin
  dummy := SchuelerArr[j];
  SchuelerArr[i] := SchuelerArr[j];
  SchuelerArr[j] := dummy;
end;


procedure TForm1.Sortiere;
var i,j: integer;
begin
  for i:= Low(SchuelerArr) to High(SchuelerArr) do
    for j:= i + 1 to High(SchuelerArr) do begin
      if SchuelerArr[j].Name<SchuelerArr[i].Name then Swap(i, j)
    end;
end;

procedure TForm1.SortBtnClick(Sender: TObject);
var i: integer;
begin
  Sortiere;
  ListBox1.Clear;
  For i := Low(SchuelerArr) to High(SchuelerArr) do
    begin
    If (SchuelerArr[i].Name<>'') then
      ListBox1.Items.Add(SchuelerArr[i].Name);
    end
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.
Seite 4 von 5   « Erste     234 5      

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