AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Arrays Sortieren

Ein Thema von renekr · begonnen am 24. Mai 2006 · letzter Beitrag vom 26. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

2 Arrays Sortieren

  Alt 24. Mai 2006, 20:23
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?

Danke.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: 2 Arrays Sortieren

  Alt 24. Mai 2006, 20:49
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
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: 2 Arrays Sortieren

  Alt 24. Mai 2006, 21:59
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: 2 Arrays Sortieren

  Alt 24. Mai 2006, 22:41
Hallo René,

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
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: 2 Arrays Sortieren

  Alt 25. Mai 2006, 22:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#6

Re: 2 Arrays Sortieren

  Alt 25. Mai 2006, 22:57
du willst also absteigend sortieren? dann mach einfach Result:=index2-index1; das sollte reichen.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: 2 Arrays Sortieren

  Alt 25. Mai 2006, 23:47
@renekr

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

Gruß Hawkeye
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: 2 Arrays Sortieren

  Alt 26. Mai 2006, 12:22
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: 2 Arrays Sortieren

  Alt 26. Mai 2006, 13:56
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
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: 2 Arrays Sortieren

  Alt 26. Mai 2006, 14:02
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz