Delphi-PRAXiS

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 Tstringgrid, array (https://www.delphipraxis.net/80821-tstringgrid-array.html)

danku 15. Nov 2006 21:43


Tstringgrid, array
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich habe in der 1.tstringgrid eine zufällige liste erzeugt.
anhand von den unterschiedlichen sortier-möglichkeiten möchte ich die ergebnisse in der 2. stringgrid wiedergeben. meine frage wäre daher, wie ich die funktionen (Bsp: Bubble-Sort-Alg einzelnen aufrufe, weil diese in einer anderen unit ist.

Delphi-Quellcode:
 objekt.BubbleSort(sgtab2.cells[0,1+i]);
funktioniert leider nicht.

marabu 16. Nov 2006 12:39

Re: Tstringgrid, array
 
Hallo,

Funktionen aus einer anderen Unit kannst du über ihren qualifizierten Namen aufrufen - d.h. du setzt einfach den Unitnamen davor:

Delphi-Quellcode:
 Sort.BubbleSort();
Grüße vom marabu

Panthrax 16. Nov 2006 12:40

Re: Tstringgrid, array
 
Die prinzipielle Vorgehensweise für das von dir angegebene Bubble-Sort:
  • die unsortierte Liste kopieren
  • die Kopie sortieren
Das könnte dann also so aussehen:
Delphi-Quellcode:
StringList2.Assign(StringList1);
Objekt.BubbleSort(StringList2);
Im konkreten Fall mit StringGrids, hast du Zugriff auf die einzelnen Spalten mit StringGrid.Cols: TStrings. Ich würde es so versuchen (blind geschrieben):
Delphi-Quellcode:
StringGrid2.RowCount:=StringGrid1.RowCount;
StringGrid2.Cols[1].Assign(StringGrid1.Cols[1]);
BubbleSort(StringGrid2.Cols[1]); // ob das so funktioniert, weiß ich nicht
Evtl. musst du dir die zu sortierende Liste in einer Stringliste zwischenspeichern um sie zu sortieren. Ich weiß nicht genau wie sich das Stringgrid verhält, wenn man das über den Zugriff auf die Eigenschaft direkt macht. Vielleicht verfälscht es dir dein Ergebnis, weil das Stringgrid im Hintergrund Aktivitäten durchführt.

Gruß,
Panthrax.

danku 17. Nov 2006 17:23

Re: Tstringgrid, array
 
was mach ich noch falsch?

Delphi-Quellcode:
{Stringliste1:=TStringList.Create;
for i := 0 to High(Feld) do
  begin
  Stringliste1.Add(intToStr(Feld[i]));
  end;
//result := Stringliste1;



Stringliste2:=TStringList.Create;
for i := 0 to High(Feld) do
  begin
  Stringliste2.Add(intToStr(Feld[i]));
  end;}


  if cbbubble.Checked then begin //Bubble-Sort Button

  sgtab2.Cols[0].Assign(sgtab.Cols[0]);
  sgtab2.Cols[1].Assign(sgtab.Cols[1]);
  sgTab.cells[0,0]:='Nr.';
  sgTab.cells[1,0]:='Binär';
  objekt.BubbleSort(Stringliste2);
  objekt.BubbleSort(Feld);             //sgtab2.Cols[1]
  ...
 

  if cbquick.checked then begin   //Quick-Sort Button

  for I:=Low(Feld) to High(Feld) do
   Feld[I]:=Random(High(Integer));
   sgTab2.cells[1,1+i]:= inttostr(feld[i]);
   //Feld[I]:= strtoint(sgTab.cells[1,1+i]);
  objekt.quick_Sort(Feld);
 



//Bubble Sort in Klasse Tsuch: (objekt:=TSuch)

procedure TSuch.BubbleSort(var A: Array of Integer);
begin

for i:=0 to high(A)-1 do
begin
  done:=true;
  for k:=0 to high(A)-1 do
  begin
    if A[k] > A[k+1] then
    begin
    Hilf := A[k];
    A[k] := A[k+1];
    A[k+1] := Hilf;
    done:=false;
    end;
  end;
if done then
exit;
end;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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 by Thomas Breitkreuz