AGB  ·  Datenschutz  ·  Impressum  







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

Verschieben von Lines im Memofeld

Ein Thema von Imhotep · begonnen am 29. Nov 2008 · letzter Beitrag vom 29. Nov 2008
 
Imhotep

Registriert seit: 21. Nov 2008
6 Beiträge
 
#1

Verschieben von Lines im Memofeld

  Alt 29. Nov 2008, 20:57
Hallo,

ich weiß, dass es wohl eher ungern gesehen wird, aber ich bin mit meinem Latein vollkommen am Ende. ich sitze nun seit ca 2 Stunden an einem Programmteil, welches in ein 5 zeilengroßes Memofeld Zahlen, bzw. Strings einordnen soll (und zwar richtig ^^ )

Zur Theorie:

es soll eine Highscoreliste sein, welche 5 Spieler enthält und immer wenn jemand mehr Punkte gemacht hat, erst alle Zeilen 1 nach unten verschiebt und dann in die freigewordene Zeile, die neue Punktzahl einträgt.

Gegebener Fall der Spieler hat genug Punkte für Platz 3 geworfen, so wird line 5 nach line 6 (also ins Nirvana) geschoben, 4 nach 5 und 3 nach 4 danach wird line 3 mit der neuen Punktzahl versehen.

Technisch realisiert habe ich das zum einen über eine for-schleife mit 5 downto X und in der forschleife dann

Memo1.Lines.Strings[i]:=Memo1.Lines.Strings[i-1]; zum tauschen.

was auch seperat für sich sehr gut funktioniert hat, nur in meinem quelltext eingebunden kommt wirklich nur Müll herraus .... ich erkenne nicht ein mal eine Regelmäßigkeit ...

hier der gesamte Code-Teil, der noch sehr roh ist:

Delphi-Quellcode:
  for i:=1 to 6 do //bei 6 spielern wird jeder spieler einzeln durchgegangen
    begin
          if (ASP[i]>Ahcp[5]) and (ASP[i]<Ahcp[4]) then // ASP sidn die aktuellen spielerpunkte | Ahcp sind die Punkte der highscoreliste
            begin
              mb:=MessageDlg('Highscore speichern, Spieler ' + inttostr(i) + '?', mtInformation, [mbYes,mbNo], 0);
                if mb=6 then
                  begin
                    Ahcp[5]:=ASP[i]; // die scorepunkte werden durch die spielerpunkte ersetzt
                    for j:=5 downto 4 do
                      begin
                        Memo1.Lines.Strings[i]:=Memo1.Lines.Strings[i-1]; //der tausch von den lines (Anzeige)
                        Memo2.Lines.Strings[i]:=Memo2.Lines.Strings[i-1]; //tausch der lines nur die punkte (damit komm ich um ein aueinandernehmen des strings herum, nicht besonders schön, da man 2 Dateien benötigt, aber es funktioniert ^^ )
                      end;
                    Memo1.Lines.Strings[4]:=('5. ' + inttostr(ASP[i]) + ' Punkte ' + Name.text);
                    Memo2.Lines.Strings[4]:=inttostr(ASP[i]);
                  end;
            end;
          if (ASP[i]>Ahcp[4]) and (ASP[i]<Ahcp[3]) then
            begin
              mb:=MessageDlg('Highscore speichern, Spieler ' + inttostr(i) + '?', mtInformation, [mbYes,mbNo], 0);
                if mb=6 then
                  begin
                    Ahcp[4]:=ASP[i];
                    for j:=5 downto 3 do
                      begin
                        Memo1.Lines.Strings[i]:=Memo1.Lines.Strings[i-1];
                        Memo2.Lines.Strings[i]:=Memo2.Lines.Strings[i-1];
                      end;
                    Memo1.Lines.Strings[3]:=('4. ' + inttostr(ASP[i]) + ' Punkte ' + Name.text);
                    Memo2.Lines.Strings[3]:=inttostr(ASP[i]);
                  end;
            end;
          if (ASP[i]>Ahcp[3]) and (ASP[i]<Ahcp[2]) then
            begin
              mb:=MessageDlg('Highscore speichern, Spieler ' + inttostr(i) + '?', mtInformation, [mbYes,mbNo], 0);
                if mb=6 then
                  begin
                    Ahcp[3]:=ASP[i];
                    for j:=5 downto 2 do
                      begin
                        Memo1.Lines.Strings[i]:=Memo1.Lines.Strings[i-1];
                        Memo2.Lines.Strings[i]:=Memo2.Lines.Strings[i-1];
                      end;
                    Memo1.Lines.Strings[2]:=('3. ' + inttostr(ASP[i]) + ' Punkte ' + Name.text);
                    Memo2.Lines.Strings[2]:=inttostr(ASP[i]);
                  end;
            end;
          if (ASP[i]>Ahcp[2]) and (ASP[i]<Ahcp[1]) then
            begin
              mb:=MessageDlg('Highscore speichern, Spieler ' + inttostr(i) + '?', mtInformation, [mbYes,mbNo], 0);
                if mb=6 then
                  begin
                    Ahcp[2]:=ASP[i];
                    for j:=5 downto 1 do
                      begin
                        Memo1.Lines.Strings[i]:=Memo1.Lines.Strings[i-1];
                        Memo2.Lines.Strings[i]:=Memo2.Lines.Strings[i-1];
                      end;
                    Memo1.Lines.Strings[1]:=('2. ' + inttostr(ASP[i]) + ' Punkte ' + Name.text);
                    Memo2.Lines.Strings[1]:=inttostr(ASP[i]);
                  end;
            end;
          if (ASP[i]>Ahcp[1]) then
            begin
              mb:=MessageDlg('Highscore speichern, Spieler ' + inttostr(i) + '?', mtInformation, [mbYes,mbNo], 0);
                if mb=6 then
                  begin
                    Ahcp[1]:=ASP[i];
                    for j:=5 downto 0 do
                      begin
                        Memo1.Lines.Strings[i]:=Memo1.Lines.Strings[i-1];
                        Memo2.Lines.Strings[i]:=Memo2.Lines.Strings[i-1] ;
                      end;
                    Memo1.Lines.Strings[0]:=('1. ' + inttostr(ASP[i]) + ' Punkte ' + Name.text);
                    Memo2.Lines.Strings[0]:=inttostr(ASP[i]);
                  end;
            end;
    end;
Wenn es jemand haben möchte, schick ich auch gerne die ganze dpr etc .. bzw wenn zusatzinfos noch gebraucht werden

.::edit 1: Mit dem Befehl lines.move(j-1,j) habe ich es auch schon probiert, da kam allerdings noch mehr Müll bei raus irgendwie ... ::.
  Mit Zitat antworten Zitat
 


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 08:01 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