Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi 2 Arrays Sortieren (https://www.delphipraxis.net/70085-2-arrays-sortieren.html)

renekr 24. Mai 2006 19:23


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.

marabu 24. Mai 2006 19:49

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:
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;
Grüße vom marabu

renekr 24. Mai 2006 20:59

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

marabu 24. Mai 2006 21:41

Re: 2 Arrays Sortieren
 
Hallo René,

Zitat:

Zitat von renekr
Stringlist geht nicht weil ich zahl und Sparte zusammen brauche für den chart YX

erkennst du denn nicht, dass ich beide Werte - Integer und String - in die StringList gesteckt habe?

Delphi-Quellcode:
ShowMessage(Format('Bezeichnung: %s :: Summe: %d', [
  sl[i], Integer(sl.Objects[i])
]);
Gute Nacht

marabu

renekr 25. Mai 2006 21:17

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.

BlackJack 25. Mai 2006 21:57

Re: 2 Arrays Sortieren
 
du willst also absteigend sortieren? dann mach einfach Result:=index2-index1; das sollte reichen.

Hawkeye219 25. Mai 2006 22:47

Re: 2 Arrays Sortieren
 
@renekr

Die Erklärung findest du, wenn du einen anderen Thread beginnend mit diesem Beitrag liest.

Gruß Hawkeye

renekr 26. Mai 2006 11:22

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.

marabu 26. Mai 2006 12:56

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:
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;
Grüße vom marabu

renekr 26. Mai 2006 13:02

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.
Seite 1 von 2  1 2      

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