AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Highscore - Problem mit sortieren !
Thema durchsuchen
Ansicht
Themen-Optionen

Highscore - Problem mit sortieren !

Ein Thema von doemi · begonnen am 19. Feb 2006 · letzter Beitrag vom 21. Feb 2006
 
Thorben77

Registriert seit: 22. Okt 2004
359 Beiträge
 
#4

Re: Highscore - Problem mit sortieren !

  Alt 19. Feb 2006, 19:16
Nabend.

Also...

Delphi-Quellcode:
var
  Name: string; // siehe unten
  SaveList: TStrings; // hier überflüssig
  i, j: Integer; // "j" ist hier auch überflüssig, "i" solltest Du lieber in der Laden-Prozedur deklarieren
  Zeit: Integer; // siehe unten
Zunächst solltest Du diese ganzen Variablen in den Prozeduren, in denen Du sie verwendest, lokal deklarieren. Dann merkst Du auch, dass Du Dir die "SaveList"-Variable sparen kannst ("i", "j", und "Name" auch ), weil Du sie in der Speicher-Prozedur (bzw. anderen) schon deklariert hast.

Zwischenfrage: Warum schreibst Du Dir eine "eigene" PosEx-Funktion (bzw. kopierst sie ), die gibt's doch schon in den StrUtils (die Du ja auch schon unter Uses stehen hast) ?

Weiter...

Im ListView-OnCompare vergleichst Du nicht, ob die beiden Integer, auf die die "Datas" zeigen, gleich sind, sondern nur, ob sie auf dieselbe Adresse zeigen.
Delphi-Quellcode:
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
var
  Item1IntData, Item2IntData: Integer;
begin
  { Die Data-Eigenschaft eines ListItems ist vom Typ Pointer, daher muss man sie in einen Zeiger auf einen Integer umwandeln, um
   an den Wert, auf den er zeigt, zu kommen: }

  Item1IntData := PInteger(Item1.Data)^;
  Item2IntData := PInteger(Item2.Data)^;
  if Item1IntData = Item2IntData then
    Compare := 0
  else
    if Item1IntData > Item2IntData then
      Compare := 1
    else
      Compare := -1;
end;
Die Btn1Click-Prozedur war mein' ich auch nicht ganz richtig, so wär' es besser:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  Name: string; // ist jetzt hier deklariert
  Zeit: Integer; // dito
begin
  Name := Edt1.text;
  Zeit := Random(1000); // diese Zeile ist jetzt hier
  with ListView1.Items.Add do begin
    Caption := Name;
    SubItems.Add(IntToStr(Zeit));
    Data := @Zeit; // das @ gibt die Adresse der Variable "Zeit" zurück
  end;
end;
Im OnCreate des Fensters solltest Du noch ein "Randomize" aufrufen, um "den Zufallsgenerator zu initialisieren" .
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin;
  Randomize; // <--- hier
  laden;
end;
MfG

PS: Ich hoffe, ich hab' da jetzt keinen Quatsch verzapft.

Edit: Hab' noch ein bissl was hinzugefügt.
  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 23:39 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