Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ausgabe eines Dynamischen Arrays in ein Memofeld? (https://www.delphipraxis.net/126737-ausgabe-eines-dynamischen-arrays-ein-memofeld.html)

StrangeImp 1. Jan 2009 13:21


Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Halli Hallo und Frohes neues Jahr! :)

Ich hab da son Problem (genau genommen nicht nur eins):
Ich muss ein Programm für Sortieralgorithmen schreiben (klappt auch soweit alles). Nun soll ich jedoch auch die Zwischenschritte des Algorithmus mit angeben. Also wie das Array nach dem 1. durchlauf, nach dem 2. usw. bis zum sortierten Array aussieht. Dies soll ich mit einem RichEdit- oder Memo-Feld machen. Leider hab ich da keine Ahnung von...

Ich hab versucht, das gesamte Array in dieses Memo-Feld zu packen, aber das geht nicht, da das dyn. Array nicht die gleiche weiß-ich-nich-wie-es-heißt hat (Also sowas wie wenn man versucht in nem editfeld nen integer auszugeben, wo man ja noch IntToStr machen muss):
Memo1.Lines.Add(Feld) //Feld heißt das dyn. Array

Mit einer for-schleife geht es aber auch nicht, weil dann ja die Array-Indices untereinander ausgegeben werden, sie sollen jedoch NEBENeinander ausgegeben werden.

Und nun bin ich am Ende meines begrenzten Fachwissen und Google hat sich auch gegen mich verschworen :(

Kann mir jemand helfen?

(Nebenbei noch eine Frage, die es sich aber nicht lohnt einen neuen Thread aufzumachen: Wie kann ich die Werte einer Listbox vertauschen, sodass der Unterste Wert der erste wird usw.? Denn die Ausgabe meines BubbleSorts sortiert die Liste von hohen Zahlen zu niedrigen... (Also 9-9-7-3-2 statt 2-3-7-9-9)

Danke schonmal :)

Klaus01 1. Jan 2009 13:23

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Hallo,

prinzipiell sollte es in etwa so gehen.

Delphi-Quellcode:
s:='';
for i:=0to high(feld) do
  s:=s+feld[i];
memo1.lines.add(s);
Grüße
Klaus

jaenicke 1. Jan 2009 13:34

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Und wegen der falschen Sortierung sollte es reichen das > in ein < zu verändern oder umgekehrt, je nach Code. :zwinker:

StrangeImp 1. Jan 2009 13:58

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Danke für die Antworten :)

@Klaus01:
Meinst du so? So Klappts aber irgendwie nicht.

Delphi-Quellcode:
{ MinSort: }
procedure TForm1.BitBtnMinSortClick(Sender: TObject);
  var
    i,j,s: Integer; //Zaehlvariablen
    Temp,Min: Integer; //Zwischenspeicher, Minimum
    ZeitAnfang,ZeitEnde: real;
    CounterVertauschungen: Integer;
  begin
      CounterVertauschungen:=0;
       Buttons_Verstecken;
      ZeitAnfang := Time;

      s:=' ';                                      <-----"Inkompatible Typen Int und Char"

      for i := 0 to High(Feld) do begin
          Min := i;                    
        for j := i + 1 to High(Feld) do
            if Feld[j] < Feld[Min] then Min := j;
        Temp := Feld[Min];
        Feld[Min] := Feld[i];
        Feld[i] := Temp;
       
        s:=s+feld[i];                                <-----             
        MemoZwischenschritte.lines.add(IntToStr(s)); <-----           

        CounterVertauschungen:=CounterVertauschungen + 1;
        ListboxSortiert.Items.Add(IntToStr(Temp)); //Ausgabe
       end;
            LblAuswahl.Caption:='Auswahl:'+ #13+#10+'MinSort';
            ZeitEnde := Time;
            LblEdtSortierzeit.Text := FloatToStrF((ZeitEnde-ZeitAnfang)*24*60*60,ffFixed,10,2);
            Ausgabe_GrafischeDarstellung;
            If CheckBoxZwischenschritte.Checked=true then LblEdtSortierzeit.Text:='---';
            LblEdtVertauschungen.Text:=IntToStr(CounterVertauschungen);
            LblEdtZuweisungen.Text:=IntToStr(3+(CounterVertauschungen*8)+6);
end;
Zitat:

Zitat von jaenicke
Und wegen der falschen Sortierung sollte es reichen das > in ein < zu verändern oder umgekehrt, je nach Code. :zwinker:

Funktioniert auch nicht => Es kommen Zahlen raus,d ie gar nicht sortiert werden sollten

DeddyH 1. Jan 2009 14:12

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Deklarier s mal als String und ändere die Zeile
Zitat:

Delphi-Quellcode:
s:=s+feld[i];

in
Delphi-Quellcode:
s:=s+IntToStr(feld[i]);

jaenicke 1. Jan 2009 14:24

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Und nimm in der Zeile danach das IntToStr weg. Es wandelt ja einen Integerwert in einen String um. s ist aber bereits ein String. :zwinker:

// EDIT:
Äh, dachte ich...
Ich ergänze: s muss ein String sein. :mrgreen:

StrangeImp 1. Jan 2009 14:32

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Dankeschön. Klappt auch!
Nun ist nur noch das Problem da: Es zeigt zwar die sortierten Zahlen an, nicht aber dahinter die, die noch sortiert werden sollen.
Hab einiges ausprobiert, komme aber irgendwie nicht auf die Lösung?!

s:=s+IntToStr(feld[i]) + ???;

Klaus01 1. Jan 2009 15:02

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Du sollest ja auch nicht pro Sortierschritt das aktuelle Feld ausgeben,
sonder das ganze Array in einer eigenen Schleife durchlaufen und
in dieser Schleife die Felder ausgeben.

Grüße
Klaus

StrangeImp 1. Jan 2009 15:28

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Zitat:

Zitat von Klaus01
Du sollest ja auch nicht pro Sortierschritt das aktuelle Feld ausgeben,
sonder das ganze Array in einer eigenen Schleife durchlaufen und
in dieser Schleife die Felder ausgeben.

Grüße
Klaus

Aha, und wie? Bin ich zu doof für.

jaenicke 1. Jan 2009 15:36

Re: Ausgabe eines Dynamischen Arrays in ein Memofeld?
 
Du gehst doch bereits mit der äußeren for-Schleife (i) das Feld durch. Genau das selbe machst du einfach noch einmal mit j. Vorher setzt du s auf einen leeren String und nach der Schleife gibst du ihn aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 Uhr.
Seite 1 von 2  1 2      

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