Autor Beitrag
technix01
Hält's aus hier
Beiträge: 7


D4
BeitragVerfasst: Sa 18.09.04 12:03 
Hi, ich hab hier mal 2 Fragen an die Experten unter euch:

1) Wie kann man Wörter in einer Listbox alphabetisch von A-Z bzw. umgekehrt von Z-A sortieren lassen?

2) In einer Listbox stehen 5 Werte pro Zeile nebeneinander. Diese Werte sind durch drei aufeinanderfolgende Leerzeichen getrennt. Nun sollen wenn man auf eine solche Zeile in der Listbox klickt die 5 Werte in fünf Editfelder geladen werden.

Beispiel:
--- steht hier nur als Symbol für die drei Leerzeichen

Listbox
1. Zeile: Wert1---Wert2---Wert3---Wert4---Wert5
2. Zeile: u.s.w.

Nach Klick auf die erste Zeile:
in Edit1: Wert1
in Edit2: Wert2
in Edit3: Wert3
in Edit4: Wert4
in Edit5: Wert5

Ich hoffe ihr könnt mir auch bei diesem Problem mal wieder kompetent (am besten mit Code-Beispiel) helfen.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Sa 18.09.04 12:12 
Die Sorting von A-Z ist einfach: Listbox1.Sorted:=True; Von Z-A weiss ich allerdings nicht :nixweiss:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
s:=ListBox1.Items[ListBox1.ItemIndex];
Edit1.Text:=copy(s,1,pos('   ',s)-1);
Delete(s,1,pos('   ',s)+2);
Edit2.Text:=copy(s,1,pos('   ',s)-1);
Delete(s,1,pos('   ',s)+2);
Edit3.Text:=copy(s,1,pos('   ',s)-1);
Delete(s,1,pos('   ',s)+2);
Edit4.Text:=copy(s,1,pos('   ',s)-1);
Delete(s,1,pos('   ',s)+2);
Edit5.Text:=copy(s,1,pos('   ',s)-1);
Den Code solltest du in ListBox1.OnClick packen.

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
technix01 Threadstarter
Hält's aus hier
Beiträge: 7


D4
BeitragVerfasst: Sa 18.09.04 12:28 
Vielen Dank für die schnelle Hilfe :!:
Ich Bins
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 197

Win XP Prof
D5 Prof
BeitragVerfasst: Sa 18.09.04 22:52 
Wie wärs wenn du zum sortieren von Z-A einfach erst die Listbox auf sorted setzt, und dann einfach die einträge in umgekehrter reihenfolge in eine andere listbox lädst?

_________________
Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst!
Maweki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 197

Ubuntu Linux
Lazarus
BeitragVerfasst: So 19.09.04 07:38 
wie wärs mit einem Suche in der Delphi-PRAXiS BUBBLESORT? Der Lerneffekt ist wesentlich höher...

Dort kann man auch, wenn man das > durch ein < austauscht, genau die umgekehrte Reihenfolge erreichen...

so habe ich eine Liste sortiert, wenn es nich unbedingt ultraschnell gehen muss:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Procedure TForm1.Sort;
var
  zwischen: real;
  i, i2: integer;
begin
  for i := 1 to n do
  begin
    for i2 := 1 to (n - 1) do
    begin
      if Liste[i2 - 1] > Liste[i2] then
      begin
        zwischen:= Liste[i2 - 1];
        Liste[i2 - 1] := Liste[i2];
        Liste[i2] := zwischen;
      end;
    end;
  end;
end;

Wobei du natürlich eine andere Liste hast und die Bariable "zwischen" einen anderen Typ hat. Hier wurden reals Sortiert. Und Liste ist ein eindimensionaler realarray
und wenn du dort das > durch ein < vertauschst, sollte es genau andersherum sortiert werden...

Edit:
n ist die Länge der Liste.
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: So 19.09.04 09:50 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure SortZA(var List: TStrings);
(************************************************
 -----------------08.Juni 2004-------------------
 Sortiert eine Liste (List) von Z nach A. 
*************************************************)

var i: integer;
    sl: TStringList;
begin
 sl:= TStringList.Create;
 sl.Assign(List);
 sl.Sort;                           //sortieren...

 for i:=0 to (sl.Count div 2)-1 do  //... und umdrehen
     sl.Exchange(i, sl.Count-1 - i);

 List.Assign(sl);     
end; {SortZA}


für 1. :P

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)