Autor Beitrag
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 10:36 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
[*]Wenn ein Spiel zuende ist, kann ich nochmal einen Highscore eintragen, zwar "nicht fertig", aber mit den restlichen Daten.
Wie kann ich dies unterbinden?
Das ist ein Konzept-Fehler, erzeuge Highscores automatisch beim Gewinnen (also direkt nach dem Dialog, dass man "gewonnen" hat). :idea: Habe ich aber jetzt schon ca. 3x geschrieben... :)
Ansatz für das Namens-Problem: mach das Edit-Feld für den Spielernamen auf das Hauptformular. Beim Anlegen eines Highscores prüfst du, ob das Feld leer ist. Ist das so, machst du ein InputQuery() auf, in dem du den Namen abfragst. Dann schreibst du den Namen in das Editfeld und legst den Highscore an. Bricht der Benutzer die Zwangseingabe des Namens ab, brichst du auch die Anlage des Highscores ab - kein Name, kein Score. :P

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Was meinst du mit modal?
Damit meine ich z.B. Form2.ShowModal; statt Form2.Show; dann blockiert Form2 die Anwendung, bis man das Fenster wieder schließt.

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Hattest du dies vielleicht schon in deiner Version gefixt?
Jap. Gilt auch für die folgenden Anmerkungen.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 11:43 
Ich versuche damit zu schaffen:
ausblenden Delphi-Quelltext
1:
if EdName.text= ''					

Wieso bekomme ich hier einen Fehler?
Zitat:
[DCC Fehler] Unit2.pas(130): E2015 Operator ist auf diesen Operandentyp nicht anwendbar

?

Die If´s Anderst beschrieben und es geht...

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:

Ansatz für das Namens-Problem: mach das Edit-Feld für den Spielernamen auf das Hauptformular. Beim Anlegen eines Highscores prüfst du, ob das Feld leer ist. Ist das so, machst du ein InputQuery() auf, in dem du den Namen abfragst. Dann schreibst du den Namen in das Editfeld und legst den Highscore an. Bricht der Benutzer die Zwangseingabe des Namens ab, brichst du auch die Anlage des Highscores ab - kein Name, kein Score. :P
s

Also ich habe nun eingefügt, dass vor dem Highscore erstellen und der Gewonnen Nachricht auf einen Namen geprüft wird, nur was ist mit InputQuery() gemeint? Und ich bekomme ich es hin, dass wen der Name gefehlt hat und dann eingegebn wurde, der Highscore doch noch gespeichert wird? :)


Zuletzt bearbeitet von Vorschlag am Di 19.01.10 16:48, insgesamt 1-mal bearbeitet
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 12:47 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Also ich habe nun eingefügt, dass vor dem Highscore erstellen und der Gewonnen Nachricht auf einen Namen geprüft wird,
Ich habe diesen Code entfernt, da er nicht mehr relevant ist (in der Highscore-Unit wird doch gar nix mehr eingetragen, das passiert jetzt alles in der MainForm). :idea:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
nur was ist mit InputQuery() gemeint? Und ich bekomme ich es hin, dass wen der Name gefehlt hat und dann eingegebn wurde, der Highscore doch noch gespeichert wird? :)
Das habe ich an dem Code geändert:
  • Das Verhalten bei fehlendem Namen entspricht jetzt meinem Vorschlag.
  • Ich habe deine grauslige Codeformatierung berichtigt :roll: (Code formatieren ist keine überflüssige Arbeit für Sauna-unten-sitzer, du siehst doch selbst kaum noch Strukturen in deinem eigenen Code!).
  • Weiterhin ist das .ShowModal; statt der Ein-/Ausblenderei der Forms auch drin.
  • Ich habe deinen zusätzlichen Code aus der function AllCardsOpen: Boolean; dahin verschoben, wo er hingehört.
Allerdings ist dein Highscore-Format noch wurstig. Du erstellst so einen neuen Eintrag:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
      with Form2.lvHighscore.Items.Add do begin // neuen Highscore-Eintrag machen (auto-sortiert!)
        Caption := EdName.Text; // Name eintragen
        SubItems.Add(Form1.LbGebrauchteZeit.Caption); // und für die Ausgabe
        SubItems.Add(IntToStr(Points));
        SubItems.Add(IntToStr(Moves));
        SubItems.Add(DateTimeToStr(Now)); // Datum eintragen
      end;
Beim Speichern wird das Ganze als Stringliste serialisiert und dann wieder so geladen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
      // geladene Datei auswerten und in das ListView übertragen
      for i := 0 to Datei.Count-1 do begin // über alle Zeilen der Datei
        Zeile.CommaText := Datei.Strings[i]; // Zeile zerlegen
        if (Zeile.Count = 5then // Name, Punkte, Datum müssen da sein
          with lvHighscore.Items.Add do begin // neuen Eintrag anlegen
            Caption := Zeile.Strings[0]; // Name eintragen
            Data := Pointer(StrToIntDef(Zeile.Strings[1],0)); // Punktestand zum Sortieren
            SubItems.Add(IntToStr(Integer(Data))); // und für die Ausgabe
            SubItems.Add(Zeile.Strings[2]); // Datum
          end;
Anlegen tust du 5 Elemente für einen Highscore, aber beim Laden nur 3. :nut: :nixweiss:

cu
Narses
Einloggen, um Attachments anzusehen!
_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 14:14 
Das Problem mit dem Laden habe ich jetzt seit ner Stunde versucht hinzubekommen.

Aber auch mit deinem Tutorial und dieser Anleitung: www.delphi-treff.de/...cherung/ini-dateien/
komme ich einfach nicht drauf, wie ich die Weiteren Werte einlesen kann?
Kannst du mir einen Tipp geben?

Danke.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 14:28 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem mit dem Laden habe ich jetzt seit ner Stunde versucht hinzubekommen.

Aber auch mit deinem Tutorial und dieser Anleitung: www.delphi-treff.de/...cherung/ini-dateien/
komme ich einfach nicht drauf, wie ich die Weiteren Werte einlesen kann?
Dieses Tutorial behandelt ja auch etwas völlig anderes. Was haben INI-Dateien mit dem Textlistenformat zu tun, die hier verwendet werden? :nixweiss:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Kannst du mir einen Tipp geben?
Wie wäre es, einfach auch wieder 5 Werte beim Laden anzulegen? :zwinker:

Im Zweifel zeig mal deinen Code (brauchst nicht wieder das ganze Projekt hochladen, es reicht wenn du den Ausschnitt (analog zu dem letzten Codeschnipsel in meinem letzen Post) zeigst).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 14:55 
Ich würde es so machen?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
      // geladene Datei auswerten und in das ListView übertragen
      for i := 0 to Datei.Count-1 do begin // über alle Zeilen der Datei
        Zeile.CommaText := Datei.Strings[i]; // Zeile zerlegen
        if (Zeile.Count = 5then // Name, Punkte, Datum müssen da sein
          with lvHighscore.Items.Add do begin // neuen Eintrag anlegen
            Caption := Zeile.Strings[0]; // Name eintragen
            Data := Pointer(StrToIntDef(Zeile.Strings[1],0)); // Punktestand zum Sortieren
            SubItems.Add(IntToStr(Integer(Data))); // und für die Ausgabe
            SubItems.Add(Zeile.Strings[2]); // Datum
            SubItems.Add(Zeile.Strings[3]);
            SubItems.Add(Zeile.Strings[4]);
          end;



Wobei ich mir grad mal die erstellte .ini angeschaut habe und eigentlich nur 3 Daten gespeichert werden?
hfhgf,22,9

d.h. das Laden ist nicht das Problem sondern das Speichern?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 15:07 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde es so machen?
Sieht gut aus. ;)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Wobei ich mir grad mal die erstellte .ini angeschaut habe und eigentlich nur 3 Daten gespeichert werden?
hfhgf,22,9

d.h. das Laden ist nicht das Problem sondern das Speichern?
Scheint mir eine alte/ungültige INI zu sein. Löschen und neuen Highscore anlegen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 15:11 
:D

Es funktioniert!!!
Yippeh :)

Wär wirklich wohl ne alte .ini gewesen...

So das wichtigste ist geschafft. Mal schauen, ob ich noch mehr einfügen möchte.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 15:29 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Es funktioniert!!!
Yippeh :)
[...]
So das wichtigste ist geschafft. Mal schauen, ob ich noch mehr einfügen möchte.
Musst du nicht Fragen zu "deinem" Projekt beantworten? :lupe: (ich schätze mal, das Ding hier soll deine Info-Note retten 8) oder?) Das könnte nach meinem bisherigen Eindruck von deinen "Programmierfähigkeiten" leicht ins Auge gehen - du hast doch ganz sicher keinen blassen Schimmer, wie die GameEngine funktioniert oder etwa doch (damit würde ich dich annageln)? :mrgreen: Wenn ich dein Info-Lehrer wäre, bräuchte ich ca. 5 Minuten um rauszufinden, dass du das nie und nimmer alleine geschrieben haben kannst. Hast du schon einen Plan was du sagen/tun willst, wenn das rauskommt und der Le(e|h)rkörper anfängt, Streß zu machen? :mahn: Schade, dass ich nicht dabei bin... :twisted: Ich liebe Schlachtfeste... :angel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 15:57 
mmh, also dein Tutorial werde ich mir durchlesen :D
Außerdem ist Hilfe beim Erstellen des Programmes nicht verboten :)
Fragen müssen wir nicht direkt beantworten, sondern wir bekommen Aufgaben, die wir ins 90min erledigen sollen :)

Habe schon eine neue Frage:
Wie sortiere ich die Highscoreliste primär nach gebrauchter Zeit und falls die gleich ist dann nach Zügen?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 16:05 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Fragen müssen wir nicht direkt beantworten, sondern wir bekommen Aufgaben, die wir ins 90min erledigen sollen :)
Die können sich doch aber nicht auf das Projekt beziehen. :gruebel: Dazu müsste die Projekt-Aufgabe ja normiert für alle gleich sein. :nixweiss:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Wie sortiere ich die Highscoreliste primär nach gebrauchter Zeit und falls die gleich ist dann nach Zügen?
Dann zeig mir doch mal die Stelle als Codeausschnitt, an der bestimmt wird, wie sich zwei Elemente der Liste zueinander verhalten. Dann sehen wir weiter. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 16:43 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Die können sich doch aber nicht auf das Projekt beziehen. :gruebel: Dazu müsste die Projekt-Aufgabe ja normiert für alle gleich sein. :nixweiss:

Naja wir können, wenn wir wollen vorher schon ihm unser Programm schicken, damit er individuelle aufgaben geben kann. Aber ich denke, dass es besser ist, die normalen Aufgaben zu bearbeiten :D

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Dann zeig mir doch mal die Stelle als Codeausschnitt, an der bestimmt wird, wie sich zwei Elemente der Liste zueinander verhalten. Dann sehen wir weiter. ;)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
// Sortiervergleich für die Highscore-Liste
procedure TForm2.lvHighscoreCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
  Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data));
end;

Also werden sie primar nach Item1 absteigend sortiert.
Wenn allerdings Item1 und Item2 gleich sein sollten, dann will ich, dass sie nach Zeile.Strings[3] sortiert werden.
Falls dies auch gleich sein sollte, dann nach dem Eintragedatum also Zeile.Strings[4]
sieht es dann so aus?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// Sortiervergleich für die Highscore-Liste
procedure TForm2.lvHighscoreCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
  Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data));
  Compare := CompareValue(Integer(Item1.Zeile.Strings[3]),Integer(Item2.Zeile.Strings[3]));
  Compare := CompareValue(Integer(Item1.Zeile.Strings[4]),Integer(Item2.Zeile.Strings[4]));
end;

?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 16:54 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Also werden sie primar nach Item1 absteigend sortiert.
Jup, die Stelle ist es. ;)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Wenn allerdings Item1 und Item2 gleich sein sollten, dann will ich, dass sie nach Zeile.Strings[3] sortiert werden.
Wie wird denn zurückgemeldet, dass zwei Einträge gleich sind?

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Falls dies auch gleich sein sollte, dann nach dem Eintragedatum also Zeile.Strings[4]
Hier musst du noch auf die Datentypen achten. :idea:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
sieht es dann so aus?
Geht schon in diese Richtung. ;) Allerdings musst du noch verhindern, dass eine ungleich-Relation wieder überschrieben wird. :idea: Und, wie schon gesagt, die Datentypen stimmen nicht.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 17:13 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
// Sortiervergleich für die Highscore-Liste
procedure TForm2.lvHighscoreCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
  if Item1.Data = Item2.Data
  then Compare := CompareText(Item1.SubItems[3],Item2.SubItems[3])
  else
  begin Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data));
  end;
end;

Nur das Kompilieren geht nicht.
Listenindex übersteigt das Maximum.
???

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Außerdem ist mir aufgefallen, dass die Liste erst beim Neuen Starten sortiert wird.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.01.10 19:53 
Moin!

Zunächst mal dein Code vernünftig eingerückt, bereinigt und kommentiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
// Sortiervergleich für die Highscore-Liste
procedure TForm2.lvHighscoreCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
  if (Item1.Data = Item2.Data) then // wenn die Punkte/Zeit bei den Elementen gleich sind, dann...
    Compare := CompareText(Item1.SubItems[3],Item2.SubItems[3]) // vergleiche die 5. Spalte (auf Textbasis!)
  else // sonst...
    Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data)); // vergleiche die Punkte/Zeit
end;
Sieht soweit gut aus. :zustimm: (wobei du vermutlich das Datum nicht als Text vergleichen willst, aber egal)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Nur das Kompilieren geht nicht.
Listenindex übersteigt das Maximum.
???
Das hat nix mit dem Kompilieren zu tun, sondern ist ein Laufzeitfehler (also ein Fehler, der erst auftritt, wenn das Programm läuft). Und zwar hängt das damit zusammen, dass die Items bei Einfügen bereits sortiert werden, zu diesem Zeitpunkt sind aber die .SubItems noch nicht gesetzt. Deshalb musst du dem Listview sagen, es soll erstmal warten, mit den ganzen automatisch Funktionen und das dann am Ende erledigen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
      // geladene Datei auswerten und in das ListView übertragen
      lvHighscore.Items.BeginUpdate;
      for i := 0 to Datei.Count-1 do begin // über alle Zeilen der Datei
        Zeile.CommaText := Datei.Strings[i]; // Zeile zerlegen
        if (Zeile.Count = 5then // Name, Punkte, Datum müssen da sein
          with lvHighscore.Items.Add do begin // neuen Eintrag anlegen
            Caption := Zeile.Strings[0]; // Name eintragen
            Data := Pointer(StrToIntDef(Zeile.Strings[1],0)); // Punktestand zum Sortieren
            SubItems.Add(IntToStr(Integer(Data))); // und für die Ausgabe
            SubItems.Add(Zeile.Strings[2]); // Datum
            SubItems.Add(Zeile.Strings[3]);
            SubItems.Add(Zeile.Strings[4]);
          end;
      end;
      lvHighscore.Items.EndUpdate;
    finally

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Außerdem ist mir aufgefallen, dass die Liste erst beim Neuen Starten sortiert wird.
Das liegt daran, dass du beim Anlegen eines neues Scores die Punkte nicht in die .Data-Eigenschaft schreibst. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Mi 06.01.10 20:15 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Sieht soweit gut aus. :zustimm: (wobei du vermutlich das Datum nicht als Text vergleichen willst, aber egal)

Funktioniert auch :) Allerdings mit SubItems[1] will ja die 3. Spalte.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Das hat nix mit dem Kompilieren zu tun, sondern ist ein Laufzeitfehler (also ein Fehler, der erst auftritt, wenn das Programm läuft). Und zwar hängt das damit zusammen, dass die Items bei Einfügen bereits sortiert werden, zu diesem Zeitpunkt sind aber die .SubItems noch nicht gesetzt. Deshalb musst du dem Listview sagen, es soll erstmal warten, mit den ganzen automatisch Funktionen und das dann am Ende erledigen:

Super funktioniert nun.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Das liegt daran, dass du beim Anlegen eines neues Scores die Punkte nicht in die .Data-Eigenschaft schreibst. :idea:

Verstehe ich leider mal wieder nicht :)

Gruß
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 07.01.10 01:04 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Das liegt daran, dass du beim Anlegen eines neues Scores die Punkte nicht in die .Data-Eigenschaft schreibst.
Verstehe ich leider mal wieder nicht
Nun, beim Laden der Scores hast du diese Zeile drin:
ausblenden Delphi-Quelltext
1:
Data := Pointer(StrToIntDef(Zeile.Strings[1],0)); // Punktestand zum Sortieren					
Irgendwie sowas fehlt aber beim Anlegen eines neuen Scores. ;)

Nochwas: Ich habe das Spiel gestartet, nichts getan und dann erstmal diesen Beitrag geschrieben. Dann habe ich das Spiel gelöst und kriege einen Score (=benötigte Zeit), die gar nix mit der Realität zu tun hat. Will sagen: du darfst die Zeit erst zählen, wenn der erste Klick erfolgt ist. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Do 07.01.10 17:29 
Hey =)

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
du darfst die Zeit erst zählen, wenn der erste Klick erfolgt ist. :idea:
Jop, das wäre in der Tat eine Idee :think: :mrgreen:

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 07.01.10 17:46 
Moin!

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
du darfst die Zeit erst zählen, wenn der erste Klick erfolgt ist. :idea:
Jop, das wäre in der Tat eine Idee :think: :mrgreen:
Kein Cross-Topic-Flaming hier! :motz:

Sehe ich aber sonst durchaus nicht so: beim MyJongg kann man ja bereits nach Pärchen suchen, was hier nicht geht. :P

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Vorschlag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 63



BeitragVerfasst: Do 07.01.10 20:23 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Nun, beim Laden der Scores hast du diese Zeile drin:
ausblenden Delphi-Quelltext
1:
Data := Pointer(StrToIntDef(Zeile.Strings[1],0)); // Punktestand zum Sortieren					
Irgendwie sowas fehlt aber beim Anlegen eines neuen Scores. ;)

Bist du sicher, dass man mit dieser Zeile arbeiten muss?
mmh, ansetzen würde ich natürlich an dieser Stelle:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
if (EdName.Text = ''then // Kein Name da?
              EdName.Text := InputBox('Bitte geben Sie einen Namen ein.','Ihr Name:','');
            if (EdName.Text <> ''then begin // nur wenn ein Name da ist...
              ShowMessage('Herzlichen Glückwunsch Sie haben gewonnen!'#13#10#13#10+
                          'Benötigte Zeit in Sekunden: '+LbGebrauchteZeit.Caption+#13#10#13#10+
                          'Sie haben '+FloatToStr(FMoves)+' Fehlversuche gehabt.');
              with Form2.lvHighscore.Items.Add do begin // neuen Highscore-Eintrag machen (auto-sortiert!)
                Caption := EdName.Text; // Name eintragen
                SubItems.Add(Form1.LbGebrauchteZeit.Caption); // und für die Ausgabe
                SubItems.Add(IntToStr(Points));
                SubItems.Add(IntToStr(Moves));
                SubItems.Add(DateTimeToStr(Now)); // Datum eintragen
              end;
              Form2.ShowModal;

            end
            else
              ShowMessage('Kein Name, kein Highscore!');
          end;

folgendes funktioniert fast:
ausblenden Delphi-Quelltext
1:
2:
              SubItems.Add(DateTimeToStr(Now)); // Datum eintragen
                Data := Pointer(StrToInt(SubItems.Add[Points])); // Punktestand zum Sortieren

nur nach dem Anlegen eines Highscores, ist der ListenIndex wieder überfordert.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Nochwas: Ich habe das Spiel gestartet, nichts getan und dann erstmal diesen Beitrag geschrieben. Dann habe ich das Spiel gelöst und kriege einen Score (=benötigte Zeit), die gar nix mit der Realität zu tun hat. Will sagen: du darfst die Zeit erst zählen, wenn der erste Klick erfolgt ist. :idea:

Da habt ihr Recht :)
Weiß aber derzeit noch nicht unbedingt, wo ich ansetzen muss... :) bin noch am Testen.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.