Autor |
Beitrag |
Laxans
      
Beiträge: 28
|
Verfasst: Fr 30.01.04 21:23
Hi!
Naja, mein problem dürfte mit der Überschrift klar sein... Für alle dies nicht verstehen: ich habe in einer TStringList mehrere verschiedene String (  wer hätte das gedacht)... die möchte ich alphabetisch sortieren...
Danke schonmal im Vorraus
Moderiert von Peter Lustig: Topic verschoben
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 30.01.04 21:29
Hallo
Tstringlist + F1 -> Eigenschaft sorted oder Methode sort.
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Fr 30.01.04 21:30
Such mal im Forum nach BUBBLESORT, falls du dich mit Sortieralgorithmen beschäftigen willst.
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Zuletzt bearbeitet von derDoc am Fr 30.01.04 21:31, insgesamt 1-mal bearbeitet
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Fr 30.01.04 21:31
hallo,
schau dir mal die funktion AnsiCompareStr an. Damit und einer schleife-kombination lässt sich jede stringlist sortieren.
Gruß
Ken
edit: misst zu spät 
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Fr 30.01.04 21:40
Tut mir leid wenn das n bissl sch***** klingt aber ich komm damit nicht zu rande und ich hab keine zeit damit lange zu probieren... ich muss das unbedingt bis morgen fertig haben! kann mir jemand bitte eben eine fkt posten z.b.
Delphi-Quelltext
Das wäre sehr nett!!!
Danke!
|
|
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Fr 30.01.04 21:46
So gehts ganz schnell:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var StringListe: TStringList; begin StringListe := TStringList.Create; StringListe.Sort; StringListe.Free; end; |
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 30.01.04 21:48
ok, weil heut freitag ist:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); Var Sl:TStringList; begin SL:=TStringList.Create; try sl.Assign(memo1.Lines); sl.Sort; Memo1.Lines.Assign(sl); finally SL.free; end; end; |
bist du auf ein memo angewiesen (wiel z.B. eingabe)? Bei einer Listbox gibst gleich die sorted-eigenschaft.
mfg Frank
edit: zu langsam
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Fr 30.01.04 21:49
danke, abert das nützt mir nichts weil eine andere stringlist genauseo umsortiert werden muss, also wenn bei der die alphabetisch der 1. und 3. punkt vertauscht werden müssen auch in der 2. Stringlist das 1. und 3. Item vertauscht werden!
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 30.01.04 21:53
Laxans hat folgendes geschrieben: | danke, abert das nützt mir nichts weil eine andere stringlist genauseo umsortiert werden muss, also wenn bei der die alphabetisch der 1. und 3. punkt vertauscht werden müssen auch in der 2. Stringlist das 1. und 3. Item vertauscht werden! |
2 Listen? sieht so aus, als ob du eine falsche Komponenten benutzt.
nimm besser ein Listview, das kann mehrere Spalten verwalten. Stell Style auf vsreport und füge ein paar columsn hinzu, Wie du Einträge hinzufügst, steht in der onlinehilfe und Tlistitems.add. Wie du die Spalten sortierst, steht unter ONColumClick der Listview. Alles mit Codebeispielen inder Onlinehilfe.
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Fr 30.01.04 21:57
Nein, es muss auf jeden fall mir 2 StringListen bzw. in wirklichkeit mit 2 Memofeldern geschehen. sonst muss ich das vom einen ins andere übertagen und wieder zurück und das prog ist für die schule und die haben nur 50 oder 66 mhz rechener, da will ich das nicht tun. außerdem geht es nicht nur darum es zu tun sondern auch es so zu können...
thx
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 30.01.04 22:02
dann mußt da halt selber sortieren: und den Link anklicken, der dir im 3. Post genannt wurde. Das wird dann aber schwierig bis morgen, wenn du noch nicht viel mit Delphi machst
Wenn das für die Schule ist, habt ihr bestimmt auch Sortieralgos besprochen.
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Fr 30.01.04 22:07
Es ist weder eine Hausaufgabe noch irgendwas für informatik. Das ist ein Prog das auf einem PC laufen soll
Wenn ich da mehrere strings habe, wir bekomm ich in einen integer in welcher reihe der string steht der im alphabet als erster kommt?!
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Sa 31.01.04 02:27
hallo laxans!
Zitat: | Das ist ein Prog das auf einem PC laufen soll |
die meisten programme laufen auf pc's
wenn ich diesen beitrag zuerst gelesen hätte, dann wär ich gleich draufgekommen, was du vorhast...
du sollst also zusammengehörige strings (zb vorname und zuname), welche in getrennten memoboxen liegen, zb nach dem zunamen sortieren und der zugehörige vorname soll in der selben reihenfolge in der zweiten memobox auftauchen. hab ich's jetzt verstanden?
deine lösung ist aber nicht grad die geschickteste, aber bitte.
- damit der zusammenhang gewahrt bleibt, hängst du vor dem einlesen die in einen string konvertierte laufende nummer am schluss an [zuname0001] [vorname0001]
- jetzt sortierst du die liste mit den zunamen [stringlist.sort, bzw stringlist.sorted:= true]
- die position des zugehörigen vornamen in der zweiten stringlist erhältst du dadurch, dass du die laufende nummer am schluss des zunamens wieder in eine zahl umwandelst und mit stringlist.strings[nummer] seine position in der liste feststellst - diese ist aber immer um eines weniger als man glaubt, da die zählerei bei 0 beginnt
ich glaub nicht, dass jemand dein problem noch komplizierter lösen kann *g*
einfacher wärst, wenn du einen record, ein array of record und einen schnell zu erstellenden sortieralgorithmus verwenden würdest...
mfg, stefan
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 31.01.04 12:52
Hallo!
Folgender Code benötigt zwei Listboxen mit den Datensätzen, die sortiert werden sollen. Dabei werden erst nur die Positionen vertauscht und dann hinterher die Listboxes wieder in der richtigen Reihenfolge befüllt.
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:
| procedure TForm1.Sort; var i,j,temp : Integer; positionen : Array of Integer; tempList1, tempList2 : TStringList; begin SetLength(positionen, ListBox1.Items.Count);
for i:=0 TO ListBox1.Items.Count-1 do positionen[i] := i;
For i := 1 to High(positionen) do For j := High(positionen) downto i do If ListBox1.Items[positionen[j]] < ListBox1.Items[positionen[j-1]] then Begin temp := positionen[j]; positionen[j] := positionen[j-1]; positionen[j-1] := Temp; end;
tempList1 := TStringList.Create; tempList1.AddStrings(ListBox1.Items);
tempList2 := TStringList.Create; tempList2.AddStrings(ListBox2.Items);
ListBox1.Clear; ListBox2.Clear; for i:=0 to High(positionen) do begin ListBox1.Items.Add(tempList1[positionen[i]]); ListBox2.Items.Add(tempList2[positionen[i]]); end; tempList1.Free; tempList2.Free; end; |
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Sa 31.01.04 19:22
Erstmal vielen Dank, besonders an Peter Lstig.
2. Es gibt auch PocketPCs auf denen normales Progs laufen @grayfox
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 31.01.04 19:50
Hallo!
@Laxans: gern geschehen. Aber auf welchem PocketPC laufen auch normale Programme? Das ist mir auch noch nicht unter gekommen ... 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Sa 31.01.04 19:54
auf den neuen mit pocketPC2003, du brauchst aber n prog das im hintergrund läuft um ein paar umgebungsvariablen zu emulieren und das prog darf nicht versuchen größer zu werden aus der Bildschirm sonst gibts n bug. Normale CommandlineProgs übrigens auch
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 31.01.04 20:16
Hast Du das selbst ausprobiert oder nur irgendwo gehört? Den die Prozessor-, Speicher- und Betriebssystem-Architektur ist so unterschiedlich, dass ich das nicht glauben kann.
Kann es sein, dass Du .NET-Anwendungen im Compact Framework meinst?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Laxans 
      
Beiträge: 28
|
Verfasst: Sa 31.01.04 20:36
Ich hab das nur gehört, aber von einem Freund der son ding hat und auch selbst proggen kann und der sagt seine progs laufen mit hilfe des emus (den man übrigens auch direkt in die exe mit einbinden kann) auf seinen pc und auf seinem handheld
|
|