Autor Beitrag
Laxans
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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 ( :idea: wer hätte das gedacht)... die möchte ich alphabetisch sortieren...

Danke schonmal im Vorraus

Moderiert von user profile iconPeter Lustig: Topic verschoben
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Fr 30.01.04 21:30 
Such mal im Forum nach Suche in: Delphi-Forum, Delphi-Library 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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.
ausblenden Delphi-Quelltext
1:
sortiere(memo1.lines)					

Das wäre sehr nett!!!

Danke!
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Fr 30.01.04 21:46 
So gehts ganz schnell:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  StringListe: TStringList;
begin
  StringListe := TStringList.Create;
  //Irgend etwas eintragen
  StringListe.Sort;
  //Benutzen
  StringListe.Free;
end;

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 30.01.04 21:48 
ok, weil heut freitag ist:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
Var Sl:TStringList;
begin
  //stringlist erzeugen
  SL:=TStringList.Create;
  try
    sl.Assign(memo1.Lines); //memo in Stringlist kopieren
    sl.Sort;                //sortieren
    Memo1.Lines.Assign(sl); //stringlist wieder in memo kopieren
  finally
    SL.free;  //stringliste freigeben
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.


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:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: 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