![]() |
Re: Nach ABC ordnen
Hallo,
warum ich die Labels tauschen muss ist kompliziert.... ich habe mir was geschrieben was für mich eigentlich gehen müsste nur irgendwie geht es nicht???
Delphi-Quellcode:
speicher ist die anzahl der labels.............
procedure TDatenbank.button_abcClick(Sender: TObject);
var i,i2,z:integer; begin for i:=1 to speicher do for i2:=speicher downto i do if hauptnamelabels[i2].caption>hauptnamelabels[i2+1].caption then begin z:=hauptnamelabels[i2+1].top; hauptnamelabels[i2+1].top:=hauptnamelabels[i2].top; hauptnamelabels[i2].top:=z; end; end; hauptnamelabels ist array of tlabel es sotiert sich alles ganz komisch... wo ist mein denkfehler?? |
Re: Nach ABC ordnen
Formatier deinen Text doch mal etwas besser:
Delphi-Quellcode:
ist recht unleserlich.
for i:=1 to speicher do for i2:=speicher downto i do
![]() Hat Daniel ein sehr gutes Tutorial zum Sortieren geschrieben, da müsste ein passender Algorhytmus für dich dabei sein. {Bubble o.Ä.)- |
Re: Nach ABC ordnen
Hallo,
ich verwende von seiner Seite den Bubble-Sort Algorithmus..... |
Re: Nach ABC ordnen
hallo,
kann mir jemand vileicht weiterhelfen... ich grübel jetzt schon eine halbe stunde nach.... und kapier nicht warum das nicht hinhaut.... |
Re: Nach ABC ordnen
Delphi-Quellcode:
Benutze Lowercase(string1)>Lowercase(string2).
if 'a'>'B' then
ShowMessage('Stringvergleiche sind nicht ohne!'); |
Re: Nach ABC ordnen
hallo,
hab ich auch schon ausprobiert, es geht nicht.... |
Re: Nach ABC ordnen
Mach doch wirklich was in diese Richtung:
Delphi-Quellcode:
Da musst du dir auch keine Sorgen über die Sortierung machen.
var
sortiert, nichtsortiert: TSTringlist; i,cnt: integer; str: string; begin sortiert:= TSTringlist.Create; nichtsortiert:= TSTringlist.Create; sortiert.sorted:=true; for i:=1 to AnzahlDerLabel do begin sortiert.add( Tlabel(FindComponent('Label' + IntToStr(i))).Caption); Nichtsortiert.add( TLabel(findcomponent('Label'+inttostr(i))).caption ); end; for i:=0 to AnzahlDerLabel-1 {!} do begin str := sortiert[i]; // in str steht jetzt die Caption, die alphabetisch geordnet an iter Stelle steht cnt := nichtsortiert.Indexof(str); // Oben gefundene Caption steht auf dem cnt-ten Label. // Das passende Label wird an die richtige Stelle gesetzt Tlabel(FindComponent('Label' + IntToStr(cnt+1))).top :=30+ i*40; end; Edit: Tags vergessen. |
Re: Nach ABC ordnen
hallo,
danke. |
Re: Nach ABC ordnen
moin,
man kann auch dbtext benutzen in einem DBCtrlGrid das ist viel eleganter. |
Re: Nach ABC ordnen
Wenn man 2 Strings vergleicht werden diese Zeichenweise verglichen. Damit ist die '12' kleiner, als die '2' und kommt desshalb nach vorne, da '1'<'2'
Grundsätzlich gibt es zei Lösungen für Dein Problem: 1. Du benennnst alle Label um, und zwar indem Du bei den Nummern Nullen einschiebst, sodass die StringLÄNGE aller gleich ist. z.B.: 'Label1' -> 'Label01' (falls max. 2 Stellen 01-99) oder 'Label1'->'Label001' (falls drei Stellen 001-999). 2. Du schreibst Dir eine eigene Compare-Funktion, die den numerischen Teil deiner Strings separat behandelt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz