![]() |
2 Arrays Sortieren
Hi,
Ist es möglich das man zb. 2 Array die ich parallel befülle sortieren kann? Das 1. ist ein Integer das 2. ein String Im 2. stehen die Bezeichnungen zu den Summen vom Array 1 drin. Nun befülle ich die arrays ohne Reihenfolge, das geht nicht anderst,weil ich über 2 SQL Befehle gehe die miteinander verbunden sind. Nun will ich das die Array in Reihenfolge sortiert werden,also das 1. mit dem integer und das ich darüber eine for schleife lege und da drin daie daten vom 2. array auch rauszieh. Andere möglichkeit wäre ein record mit dem integer und string drin,kann man darüber nur 1 spalte sortieren ? Kann mir da jemand einen tip geben? :gruebel: :gruebel: Danke. |
Re: 2 Arrays Sortieren
Hi,
ich verstehe nur Bahnhof - liegt das jetzt an mir? Du hast Datenpaare (Integer, String), die du über zwei SELECT Statements besorgst, wobei du die ORDER Klausel nicht verwenden kannst und die Informationen auch nicht durch einen JOIN in einer einzigen Abfrage beschafft werden können (strange). Ich denke hier sollten wir ansetzen, aber ohne Betrachtung der Genese können wir auch einfach die Daten akzeptieren. Eine Speicherung in zwei verschiedenen Arrays ist nicht nötig. Du könntest die Daten z.B. in einer StringList speichern:
Delphi-Quellcode:
Grüße vom marabu
function CompareObject(list: TStringList; index1, index2: Integer): Integer;
begin index1 := Integer(list.Objects[index1]); index2 := Integer(list.Objects[index2]); Result := index1 - index2; end; var sl: TStringList; s: String; i, iZahl: Integer; begin sl := TStringList.Create; // Daten besorgen for i := 1 to Query.RecordCount do begin s := FieldByName('DeinString').AsString, iZahl := FieldByName('DeineInteger').AsInteger; sl.AddObject(s, Pointer(iZahl)); end; sl.CustomSort(CompareObject); // Daten verwerten sl.Free; end; |
Re: 2 Arrays Sortieren
Hi marabu,
ja war schwer z uerklären. Also ich habe einen string und integer; String:bezeichnung und integer ist die Summe der Kosten von der Bezeichnung. Ich habe group by und inner join über 2 Viewsgemacht und dann nocheine Flixible Query im Source. Wirklich heftig !! Nun laufe ich das SQL Query durch weil sortieren geht nicht. Bekomm einmal ein Ergebniss mit alle Teilen das mehrere Sparten beinhält, und die 2. bekomme ich über Distinct die anzahl der versch. Sparten. Nun laufe ich über die sparten und mache dabei eine abfrage über die Teile mit der Sparte über die vorherige abfrage. Und bekomem als Ergebniss den mischmasch. Das wollte ich nun in einen chart geben und sortieren natürlich. Ich weiß es ist etwas heftig aber geht nicht anderst. danke PS: Stringlist geht nicht weil ich zahl und Sparte zusammen brauche für den chart YX |
Re: 2 Arrays Sortieren
Hallo René,
Zitat:
Delphi-Quellcode:
Gute Nacht
ShowMessage(Format('Bezeichnung: %s :: Summe: %d', [
sl[i], Integer(sl.Objects[i]) ]); marabu |
Re: 2 Arrays Sortieren
Hi,
Sorry habs es mri nochmals angeschaut und auch getestet. Es geht ,nur ein Nachteil. Es wird der kleinste Wert sortiert. Ich lasse am schluss eine For Schleife von 0 - 10 darüber laufen udn fülle den Cahrt mit den Top Ten Werte. Natürlich würde auch eine For downto schleife gehn,aber wärst du mal so nett und erklärst mir die Funktionsweise des compars? Ich kapier das net. Result:=index1-index2; danke. |
Re: 2 Arrays Sortieren
du willst also absteigend sortieren? dann mach einfach Result:=index2-index1; das sollte reichen.
|
Re: 2 Arrays Sortieren
@renekr
Die Erklärung findest du, wenn du einen anderen Thread beginnend mit ![]() Gruß Hawkeye |
Re: 2 Arrays Sortieren
Hi,
Viele dank für eure Infos. Nun würde ich noch gerne in meine Stringlsit eine 2. Zahl oder 2. String mit rein packen. Kann i das mit Addobject auch machen oder sit das begrenzt? Danke. |
Re: 2 Arrays Sortieren
Hallo René,
das kommt auf die Art deiner Zusatzinformation und deren Verwendung an. Grundsätzlich ist die StringList für jede Assoziation geeignet, deren führendes Element ein String ist. Alle damit assoziierten Informationen kannst du dann zu Objektvariablen machen:
Delphi-Quellcode:
Grüße vom marabu
type
TInfo = class Zahl: Integer; Zeichenkette: String; // ... end; var s: TStrings; begin // ... with TInfo(s.Objects[s.AddObject('Arthur', TInfo.Create)]) do begin Zahl := 42; Zeichenkette := 'Ford'; end; end; |
Re: 2 Arrays Sortieren
Hi,
also ich habe 1 string und 2 Zahlen. und auch einmal 2 Strings und 2 Zahlen. Die immer 1 Ergebniss bidlen sollen,also alle auf den 1. String deuten müssen. Und ich will die verschiedene Strings und Integer auch getrennt aufrufen für zb. Chart oder Listview Subitems zum befüllen. Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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-2025 by Thomas Breitkreuz