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.