Autor Beitrag
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 15.01.09 15:21 
Hi,

wir haben von unserem Lehrer die Aufgabe bekommen, ein Programm zu schreiben mit dem Zufallszahlen erzeugt werden und in eine Datei gespeichert werden.

Also es werden Zufallszahlen erzeugt und in ein statisches Array gespeichert, ich wollte erst ein dynamisches machen, doch der Lehrer meinte das dies schwieriger sei.

Das Speichern in eine Datei scheint auch zu funktionieren, nur die Ausgabe in eine ListBox stellt ein Problem dar. Das Programm stürzt ab.

Was mich auch stört ist das ich dann das komplette Array ausgebe, wie kann ich denn die Anzahl mit in die Datei speichern, ohne einen eigenen Record zu machen.
Denn ich verwende Integer, was ja für Zufallszahlen passend ist.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
var
  Form1: TForm1;
  daten : array [1..100000000] of integer;
  menge_zahlen : integer;
  i : integer;
  data : file of integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
   randomize;
             AssignFile(data,'zufallszahlen.dat');
             if FileExists('zufallszahlen.dat') then ReSet(data)
             else ReWrite(data);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   menge_zahlen := StrToInt(Edit1.Text);
             for i := 1 to menge_zahlen do begin
                 daten[i] := random(menge_zahlen)+1;
                                           end;
   assignfile (data, 'Data.dat');
   rewrite (data);
   write (data, daten[i]);
   closefile (data);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   CloseFile(data);
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
    Edit1.Clear;
end;

procedure TForm1.Edit1DblClick(Sender: TObject);
begin
     Edit1.Text := IntToStr(100);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ListBox1.Clear;
    for i := 1 to 100000000 do  ListBox1.Items.Add (IntToStr(daten[i]));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    assignfile (data, 'Daten.dat');
    reset (data);
    read (data, daten[i]);
    closefile (data);
end;


Bitte schreibt dazu, auf welches Problem ihr eine Lösung habt. ;)

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
martin300
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Do 15.01.09 15:37 
Hallo,
warum sollen 100 Millionen Einträge in eine Listbox?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 15.01.09 15:42 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Das Speichern in eine Datei scheint auch zu funktionieren, nur die Ausgabe in eine ListBox stellt ein Problem dar. Das Programm stürzt ab.

Bist du sicher?
Oder läuft das Programm einfach furchtbar lange? Bei 100 Mio Einträgen, kann das schon mal dauern, bis das Programm wieder reagiert.
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 15.01.09 15:47 
Ich habe die 100000000 verwendet da wahrscheinlich keiner mehr Zahlen haben will, außerdem werden nur 100 erzeugt in das Array, allerdings die vollen 100000000 in die ListBox ausgegeben.

Kann das wirklich so lange dauern?

Wie ginge es denn mit einem Dynamischen Array, und was ist mit dem Zählen der Datensätze um alles wieder nachher zu laden.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 15.01.09 15:50 
typisierte Dateien
Passt nicht ganz zu deiner Aufgabe, aber das Prinzip ist immer das selbe.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 15.01.09 15:54 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Wie ginge es denn mit einem Dynamischen Array, und was ist mit dem Zählen der Datensätze um alles wieder nachher zu laden.

Das ist eigentlich nicht so kompliziert.

Hier mal etwas Code, das den prinzipiellen Umgang mit einem dynamischen Array zeigt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var arr : Array of Integer; {Array deklarieren, hier geben wir noch nicht die Größe an}
begin

  setLength(arr, 10); {das Array hat jetzt 10 Einträge 0 bis 9}
  ShowMessage(intToStr(high(arr))); {mit High kannst Du abfragen, wie das höchste Element ist, hier 9}

end;

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 15.01.09 15:59 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe die 100000000 verwendet da wahrscheinlich keiner mehr Zahlen haben will, außerdem werden nur 100 erzeugt in das Array, allerdings die vollen 100000000 in die ListBox ausgegeben.

Kann das wirklich so lange dauern?

Ja, weil jedes mal die Listbox neu gezeichnet wird. Besser die Daten zunächst in einer Stringlist zusammenfassen und anschließend der Listbox übergeben. ;)
Noch etwas:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button3Click(Sender: TObject);
begin
    assignfile (data, 'Daten.dat');
    reset (data);
    read (data, daten[i]);
    closefile (data);
end;

Das i könnte bei dem Aufruf irgendeinen Wert haben.
Klickst du zunächst auf den Button1, steht in i "menge_zahlen", nach einem Klick auf Button2 jedoch "10000000".
Bist du nicht auch der Meinung, dass dieser Stil mit den globalen Variablen nichts taugt? ;)
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 15.01.09 16:03 
@ Nersgatt : Wie ein Dynamisches Array aufgebaut ist weis ich, jedoch meinte unser Lehrer das es hier in dieser Anwendung zu umständlich wäre.

Also wie gehts? 8)

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 15.01.09 16:18 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
@ Nersgatt : Wie ein Dynamisches Array aufgebaut ist weis ich, jedoch meinte unser Lehrer das es hier in dieser Anwendung zu umständlich wäre.

Ich habe keine Ahnung, was er damit meinte. Tatsache ist, dass dein Array über 381 MB Arbeitsspeicher belegt.

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Also wie gehts? 8)

Eigentlich ganz einfach:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
var
  Form1: TForm1;
  daten : array of integer;
  i : integer;
  data : file of integer;

{...}

procedure TForm1.Button1Click(Sender: TObject);
begin
   SetLength(daten, StrToInt(Edit1.Text);
             for i := Low(daten) to High(daten) do begin
                 daten[i] := random(Length(daten))+1;
                                           end;
   assignfile (data, 'Data.dat');
   rewrite (data);
   write (data, daten[i]);
   closefile (data);
end;

{...}

procedure TForm1.Button2Click(Sender: TObject);
begin
  ListBox1.Items.BeginUpdate;
  try
    ListBox1.Clear;
    for i := Low(daten) to High(daten) do
      ListBox1.Items.Add (IntToStr(daten[i]));
  finally
    ListBox1.Items.EndUpdate;
  end;
end;

{...}


Low und High solltest du für dynamische Arrays verwenden, um sichergehen zu können, dass du auch beim richtigen Index anfängst. Das BeginUpdate - EndUpdate sorgt dafür, dass die ListBox während dem Einlesen nicht neu gezeichnet wird. Und siehe da - die Werte sollten nahezu sofort erscheinen :D

Grüße,
Yogu
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 15.01.09 18:50 
Hey Danke!!! So hatte ich vorher auch fast bis ich es dann mit einem statischen gemacht hatte.

So Problem erstmal gelöst...

Mal sehen was zu diesem Thema vielleicht noch anfällt.

Edit: Mir ist gerade ein Bug aufgefallen, und zwar will er bei einem neuen Start des Programms 1. nicht die Daten laden, und 2. beim Klick auf den Ladebutton auch nicht.

Es kommt folgende Fehlermeldung: "E/A-Fehler 998".
Diese Meldung habe ich noch nie gesehen.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 15.01.09 19:59 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
"E/A-Fehler 998"

Nur für den, der sich dafür interessiert: Die Meldung lautet "Unzulässiger Zugriff auf einen Speicherbereich". Ich habe allerdings keine Ahnung, was es damit auf sich hat. Tut mir leid :nixweiss:

Edit: In welcher Zeile wird denn der Fehler ausgelöst?
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 15.01.09 20:14 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TForm1.Button1Click(Sender: TObject);
begin
   menge_zahlen := StrToInt(Edit1.Text);
             for i := 1 to menge_zahlen do begin
                 daten[i] := random(menge_zahlen)+1;



                                           end;
   assignfile (data, 'Data.dat');
   rewrite (data);
   // Soll wirklich nur der letzte Wert in die Datei geschrieben werden?
   write (data, daten[i]);
   closefile (data);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    assignfile (data, 'Daten.dat');
    reset (data);
    // Welchen Wert hat i beim ButtonClick3? Jedenfalls keinen sinnvollen
    read (data, daten[i]);
    closefile (data);
end;

Hast du dir eigentlich mal meinen Post durchgelesen? :?
Außerdem: ...warum bei Dateinamen der Pfad mit angegeben werden muss
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 16.01.09 07:14 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
@ Nersgatt : Wie ein Dynamisches Array aufgebaut ist weis ich, jedoch meinte unser Lehrer das es hier in dieser Anwendung zu umständlich wäre.

Mich würde mal wirklich eine Musterlösung von Deinem Lehrer interessieren. Wird es sowas geben? Wenn ja, dann poste es mal hier. Wenn nein, dann bitte ihn um eine Musterlösung.

Der Rest ist ja schon geklärt.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: So 25.01.09 16:55 
So ich habe da jetzt nochmal eine Frage:

In einem Projekt sagt er mir: "Record, Objekt oder Klassentyp erforderlich"
"'END' erwartet, aber Dateiende gefunden"

Doch wo fehlt ein END, und was ist mit Problem 1?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
TDaten = record
         name : string[64];
         vorname : string[64];
         alter : integer;
         wohnort : string[64];
           end;

var
  Form1: TForm1;
  datei : file of TDaten;
  daten : array [1..100] of TDaten;
  counter : integer;
  pointer : integer;

// Sortieren
procedure TForm1.Button5Click(Sender: TObject);
var
   i,j : integer;
   hilf : TDaten;
begin
   // Namen
   if CheckBox1.Checked then begin
      ListBox1.Clear;
      ListBox2.Clear;
      ListBox3.Clear;
      ListBox4.Clear;
   for j := 1 to counter do
       begin
       for i := 1 to counter-1 do
           begin
           if daten[i].name > daten[i+1].name then
              begin
              hilf := daten[i];
              daten[i] := daten[i+1];
              daten[i+1] := hilf;
              end;
           end;
       end;
   for i := 1 to counter do begin
       ListBox1.Items.Add(daten[i].name);
       ListBox2.Items.Add(daten[i].vorname);
       ListBox3.Items.Add(IntToStr(daten[i].alter));
       ListBox4.Items.Add(daten[i].wohnort);
       end;
   // Vorname
   if CheckBox2.Checked then begin
      ListBox1.Clear;
      ListBox2.Clear;
      ListBox3.Clear;
      ListBox4.Clear;
   for j := 1 to counter do
       begin
       for i := 1 to counter-1 do
           begin
           if daten[i].vorname > daten[i+1].vorname then
              begin
              hilf := daten[i];
              daten[i] := daten[i+1];
              daten[i+1] := hilf;
              end;
           end;
       end;
   for i := 1 to counter do begin
       ListBox1.Items.Add(daten[i].name);
       ListBox2.Items.Add(daten[i].vorname);
       ListBox3.Items.Add(IntToStr(daten[i].alter));
       ListBox4.Items.Add(daten[i].wohnort);
       end;
   // Alter
   if CheckBox3.Checked then begin
      ListBox1.Clear;
      ListBox2.Clear;
      ListBox3.Clear;
      ListBox4.Clear;
   for j := 1 to counter do
       begin
       for i := 1 to counter-1 do
           begin
           if daten[i].alter > daten[i+1].alter then
              begin
              hilf := daten[i];
              daten[i] := daten[i+1];
              daten[i+1] := hilf;
              end;
           end;
       end;
   for i := 1 to counter do begin
       ListBox1.Items.Add(daten[i].name);
       ListBox2.Items.Add(daten[i].vorname);
       ListBox3.Items.Add(IntToStr(daten[i].alter));
       ListBox4.Items.Add(daten[i].wohnort);
       end;
   // Wohnort
   if CheckBox4.Checked then begin
      ListBox1.Clear;
      ListBox2.Clear;
      ListBox3.Clear;
      ListBox4.Clear;
   for j := 1 to counter do
       begin
       for i := 1 to counter-1 do
           begin
           if daten[i].wohnort > daten[i+1].wohnort then
              begin
              hilf := daten[i];
              daten[i] := daten[i+1];
              daten[i+1] := hilf;
              end;
           end;
       end;
   for i := 1 to counter do begin
       ListBox1.Items.Add(daten[i].name);
       ListBox2.Items.Add(daten[i].vorname);
       ListBox3.Items.Add(IntToStr(daten[i].alter));
       ListBox4.Items.Add(daten[i].wohnort);
       end;
end;

end.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 25.01.09 16:58 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
In einem Projekt sagt er mir: "Record, Objekt oder Klassentyp erforderlich"
"'END' erwartet, aber Dateiende gefunden"

In welcher Zeile werden diese Fehler ausgelöst?
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: So 25.01.09 16:58 
naja, du musst schon verraten, in welcher Zeile der Fehler auftritt...
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: So 25.01.09 17:01 
Nach dem letzten END, in meinem kompletten Code also Zeile 247 und 249.
In Zeile 247 steht das End, und in 249 logischer Weise nichts.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 25.01.09 17:02 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
   // Wohnort
   if CheckBox4.Checked then begin
      ListBox1.Clear;
      ListBox2.Clear;
      ListBox3.Clear;
      ListBox4.Clear;
   end;

Bei diesem Block fehlt ein end. ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 25.01.09 17:04 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Doch wo fehlt ein END
Rück richtig ein und schreib die begins nicht versteckt hinten in die Zeile, dann siehst du das auch selbst...
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
TDaten = record
  name: string[64];
  vorname: string[64];
  alter: integer;
  wohnort: string[64];
end;

var
  Form1: TForm1;
  datei : file of TDaten;
  daten : array [1..100] of TDaten;
  counter : integer;
  pointer : integer;

// Sortieren
procedure TForm1.Button5Click(Sender: TObject);
var
  i,j : integer;
  hilf : TDaten;
begin
  // Namen
  if CheckBox1.Checked then
  begin
    ListBox1.Clear;
    ListBox2.Clear;
    ListBox3.Clear;
    ListBox4.Clear;
    for j := 1 to counter do
    begin
      for i := 1 to counter-1 do
      begin
        if daten[i].name > daten[i+1].name then
        begin
          hilf := daten[i];
          daten[i] := daten[i+1];
          daten[i+1] := hilf;
        end;
      end;
    end;
    for i := 1 to counter do
    begin
      ListBox1.Items.Add(daten[i].name);
      ListBox2.Items.Add(daten[i].vorname);
      ListBox3.Items.Add(IntToStr(daten[i].alter));
      ListBox4.Items.Add(daten[i].wohnort);
    end;
    // Vorname
    if CheckBox2.Checked then
    begin
      ListBox1.Clear;
      ListBox2.Clear;
      ListBox3.Clear;
      ListBox4.Clear;
      for j := 1 to counter do
      begin
        for i := 1 to counter-1 do
        begin
          if daten[i].vorname > daten[i+1].vorname then
          begin
            hilf := daten[i];
            daten[i] := daten[i+1];
            daten[i+1] := hilf;
          end;
        end;
      end;
      for i := 1 to counter do
      begin
        ListBox1.Items.Add(daten[i].name);
        ListBox2.Items.Add(daten[i].vorname);
        ListBox3.Items.Add(IntToStr(daten[i].alter));
        ListBox4.Items.Add(daten[i].wohnort);
      end;
      // Alter
      if CheckBox3.Checked then
      begin
        ListBox1.Clear;
        ListBox2.Clear;
        ListBox3.Clear;
        ListBox4.Clear;
        for j := 1 to counter do
        begin
          for i := 1 to counter-1 do
          begin
            if daten[i].alter > daten[i+1].alter then
            begin
              hilf := daten[i];
              daten[i] := daten[i+1];
              daten[i+1] := hilf;
            end;
          end;
        end;
        for i := 1 to counter do
        begin
          ListBox1.Items.Add(daten[i].name);
          ListBox2.Items.Add(daten[i].vorname);
          ListBox3.Items.Add(IntToStr(daten[i].alter));
          ListBox4.Items.Add(daten[i].wohnort);
        end;
        // Wohnort
        if CheckBox4.Checked then
        begin
          ListBox1.Clear;
          ListBox2.Clear;
          ListBox3.Clear;
          ListBox4.Clear;
          for j := 1 to counter do
          begin
            for i := 1 to counter-1 do
            begin
              if daten[i].wohnort > daten[i+1].wohnort then
              begin
                hilf := daten[i];
                daten[i] := daten[i+1];
                daten[i+1] := hilf;
              end;
            end;
          end;
          for i := 1 to counter do
          begin
            ListBox1.Items.Add(daten[i].name);
            ListBox2.Items.Add(daten[i].vorname);
            ListBox3.Items.Add(IntToStr(daten[i].alter));
            ListBox4.Items.Add(daten[i].wohnort);
          end;
        end;

end.


Zuletzt bearbeitet von jaenicke am So 25.01.09 17:04, insgesamt 1-mal bearbeitet
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: So 25.01.09 17:04 
Ok jetzt fehlt aber scheinbar immer noch eins, denn jetzt tritt der selbe Fehler in Zeile 248 und 250 auf.

Ich habe schon zulange jetzt auf den Text geschaut, ich finde es einfach nicht.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.