Autor |
Beitrag |
Tester
Hält's aus hier
Beiträge: 6
|
Verfasst: 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 Tino: Titel geändert & Topic verschoben.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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.
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 String; const direction : TSortDirection); VAR n, i, j, incr : Integer; a : String; begin n := Length(arr); 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>=0) and (arr[i] > a) do begin arr[i+1] := arr[i]; dec(i); end; end; if direction = desc then begin while (i>=0) and (arr[i] < a) do begin arr[i+1] := arr[i]; dec(i); end; end; arr[i+1] := a; end;
exit; end;
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 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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 
|
|
smoo
Hält's aus hier
Beiträge: 6
Win 98
|
Verfasst: 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 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 07.01.04 19:43
und wie wäre der einfacherere weg denn?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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
|
Verfasst: Mi 07.01.04 19:58
ich kucke mal ob ich dir ne kleine hilfe schreiben kann
|
|
Tester 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 07.01.04 20:01
wäre echt super...riesen dank schon mal im voraus!!!
|
|
Wolff68
      
Beiträge: 302
Erhaltene Danke: 1
WinXP home
D6 Prof
|
Verfasst: Fr 09.01.04 19:45
Nun, als Einfach-Zu-Programmierende Lösung würd ich ja das hier vorschlagen: 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 
_________________ "Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
|
|