Autor Beitrag
Tester
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 07.01.04 19:01 
Hallo!

Ich bräuchte dringend den delphi quelltext, womit ich daten eines memo feldes alphabetisch sortieren könnte.

Ist echt wichtig. Danke schon mal im voraus...

Moderiert von user profile iconTino: Titel geändert & Topic verschoben.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 07.01.04 19:09 
Hallo!

Wie sieht denn Dein bisheriger Ansatz aus bzw. wo kommst Du nicht weiter?

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tester Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 07.01.04 19:13 
also ich muss 30 namen aus einer textdatei in ein meomo feld laden und dort aufsteigend sortieren (also von a - z)...also das laden ins memo feld ist ja kein problem, nur weiß ich nicht wie ich die namen sortieren lassen kann...ich bin völlig ratlos...
smoo
Hält's aus hier
Beiträge: 6

Win 98

BeitragVerfasst: Mi 07.01.04 19:23 
Titel: lol
hm 30 namen in ein Memo laden und dann auch noch sortieren :)
das klingt ja wie eine aufgabe aus deinem Leistugnskurs :)
so im BSZ F*E*T*L hehehhehehehe :()

ne spass ...
laden die daten in das memo dann liess dieses Memo
mit einer for schleife in ein array

for i := 0 to 29
Wortliste[i]:= memo.lines[i]

(Wortliste ist das array was man so definiert
type Twortliste= array [0..29] : string
var Wortlist : TWortliste)

dann den Sortier algorythmus porgrammieren dann wieder in das Memo einlesen aus dem Array und abgeben und 15 Noten Punkte bei der Frau becker bekommen ^^
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 07.01.04 19:28 
Hallo!

Hier mal ein Sortieralgorithmus, den ich letztens geschrieben habe, angepasst auf Strings. Du solltest immer nur "sort" starten, je nach Größe des zu sortierenden Arrays wird dann ein entsprechender Algorithmus gewählt.

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:
128:
type TSortDirection = (asc, desc);
procedure quicksort(VAR arr : Array of String;
                                const von, bis : Integer;
                                const direction : TSortDirection);
VAR links, rechts, mitte : Integer;
    temp, mitte_wert : String;
begin
  links := von;
  rechts := bis;
  mitte := (von + bis) div 2;

  mitte_wert := arr[mitte];

  if direction = asc then
  begin
    repeat
      while arr[links] < mitte_wert do inc(links);
      while mitte_wert < arr[rechts] do dec(rechts);

      if links <= rechts then
      begin
        temp := arr[links];
        arr[links] := arr[rechts];
        arr[rechts] := temp;
        inc(links);
        dec(rechts);
      end;
    until not (links <= rechts);

    if von < rechts then quicksort(arr, von, rechts, asc);
    if links < bis then quicksort(arr, links, bis, asc);
  end;

  if direction = desc then
  begin
    repeat
      while arr[links] > mitte_wert do inc(links);
      while mitte_wert > arr[rechts] do dec(rechts);

      if links <= rechts then
      begin
        temp := arr[links];
        arr[links] := arr[rechts];
        arr[rechts] := temp;
        inc(links);
        dec(rechts);
      end;
    until not (links <= rechts);

    if von < rechts then quicksort(arr, von, rechts, desc);
    if links < bis then quicksort(arr, links, bis, desc);
  end;
end;


procedure sort(VAR arr : Array of Stringconst direction : TSortDirection);
VAR n, i, j, incr : Integer;
    a : String;
begin
  n := Length(arr);
  //Straight insertion
  if n < 20 then
  begin
    for j := 1 TO High(arr) DO
    begin
      a := arr[j];
      i := j-1;
      if direction = asc then
      begin
        while (i>=0and (arr[i] > a) do
        begin
          arr[i+1] := arr[i];
          dec(i);
        end;
      end;
      if direction = desc then
      begin
        while (i>=0and (arr[i] < a) do
        begin
          arr[i+1] := arr[i];
          dec(i);
        end;
      end;
      arr[i+1] := a;
    end;

    exit;
  end;

  //Shell
  if n < 50 then
  begin
    incr := 1;
    repeat
      incr := incr*3;
      inc(incr);
    until not (incr <=n);

    repeat
      incr := incr div 3;
      for i:=incr TO n-1 DO
      begin
        a := arr[i];
        j := i;
        if direction = asc then
          while arr[j-incr] > a do
          begin
            arr[j] := arr[j-incr];
            j := j - incr;
            if j < incr then break;
          end;
        if direction = desc then
          while arr[j-incr] < a do
          begin
            arr[j] := arr[j-incr];
            j := j - incr;
            if j < incr then break;
          end;

        arr[j] := a;
      end;
    until not (incr > 1);

    exit;
  end;

  quicksort(arr, 0, n-1, direction);
end;


Damit sollte es klein Problem seinn, Dein Problem zu lösen.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tester Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 07.01.04 19:40 
@smoo:
sag mal kannste ni mal kurz den quelltext posten, ich komm so ni weiter...
ich muss den kack ja auch noch dokumentieren :D
smoo
Hält's aus hier
Beiträge: 6

Win 98

BeitragVerfasst: Mi 07.01.04 19:40 
hm sehr nice vom Quelltext her nur das es zwiemlich schwer zu vertshen ist fuer den tester wenn er nicht wiklich viel ahnung hat , meiner meinung gibts da auch nen einfacheren weg oder ?
Tester Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 07.01.04 19:43 
und wie wäre der einfacherere weg denn?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 07.01.04 19:43 
Zitat:
hm sehr nice vom Quelltext her nur das es zwiemlich schwer zu vertshen ist fuer den tester wenn er nicht wiklich viel ahnung hat , meiner meinung gibts da auch nen einfacheren weg oder ?
Bestimmt. Nur konnte ich den nicht per Copy&Paste übernehmen. Und das ist äußerste, um anderen die Hausaufgaben zu machen. Aber Du kannst ja 'nen einfacheren Weg posten.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tester Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 07.01.04 19:53 
i benötige aber wirklich dringend diese procedure...bitte mal posten...
smoo
Hält's aus hier
Beiträge: 6

Win 98

BeitragVerfasst: Mi 07.01.04 19:58 
ich kucke mal ob ich dir ne kleine hilfe schreiben kann
Tester Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 07.01.04 20:01 
wäre echt super...riesen dank schon mal im voraus!!!
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Fr 09.01.04 19:45 
Nun, als Einfach-Zu-Programmierende Lösung würd ich ja das hier vorschlagen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Sort(AMemo: TMemo);
var
  WortListe: TStringList;
begin
  WortListe := TStringList.Create;
  WortListe.AddStrings(AMemo.Lines);
  WortListe.Sort;
  AMemo.Lines.Clear;
  AMemo.Lines.AddStrings(WortListe);
  WortListe.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Sort(Memo1);
end;

Aber ich glaub kaum, daß es das ist, was Dein Lehrer sehen will :lol:

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."