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: Do 07.01.10 23:34 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwie sowas fehlt aber beim Anlegen eines neuen Scores. ;)
Bist du sicher, dass man mit dieser Zeile arbeiten muss?
100%ig. ;)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
mmh, ansetzen würde ich natürlich an dieser Stelle:
Ja, die Gegend ist gut. ;)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
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.
Hier stecken zwei Haken drin:
  1. Das mit dem Listenindex hatten wir doch schonmal, und auch eine Lösung dafür. 8) Die klappt hier auch. :idea: ;)
  2. Analysieren wir mal, was bei diesem Befehl genau passiert:
    ausblenden Delphi-Quelltext
    1:
    2:
    3:
    4:
    Data := 
      Pointer(
        StrToInt(
          SubItems.Add[Points]));
    • Die Eigenschaft .Data eines TListItems soll einen neuen Wert erhalten
    • Da die Eigenschaft vom Typ Pointer ist, müssen wir einen Typecast machen, da wir einen Integer verwenden wollen
    • Umwandlung eines Strings in einen Integer
    • Einfügen eines neuen .SubItems an das TListItem, und zwar die Formulareigenschaft Points (die übrigens ein Integer ist :shock: und gar nicht eingefügt werden kann), weiterhin liefert .Add() den Index des neu eingefügten Elements als Integer ab, kann man also auch nicht als Argument für StrToInt() nehmen. :hair:
    Ich behaupt mal, dass das nicht "fast" funktioniert, sondern gar nicht. :lol: Da dort mindestens ein Datentyp nicht richtig verwendet wird, sollte sich das nichtmal kompilieren lassen. :|
    Überlegen wir mal: was soll denn in der .Data-Eigenschaft drin stehen? Richtig: die verbrauchte Zeit. :idea: Wo hast du sie abgespeichert und wie kriegt man sie da rein? Probier mal... :zustimm:
user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Weiß aber derzeit noch nicht unbedingt, wo ich ansetzen muss... :) bin noch am Testen.
Ich würde ja mal sagen, dass die Stelle wo die Klicks verarbeitet werden, verdächtig gut aussieht. :zwinker:

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: Fr 08.01.10 00:33 
ausblenden Delphi-Quelltext
1:
Data := Pointer(StrToInt(SubItems.Add[Points])); // Punktestand zum Sortieren					

habe ich zu
ausblenden Delphi-Quelltext
1:
Data := Pointer(SubItems[Points]); // Punktestand zum Sortieren					

gemacht...

der Listviewfehler ist immer noch da.

Ich finde die stellen für
ausblenden Delphi-Quelltext
1:
lvHighscore.Items.BeginUpdate;					

und
ausblenden Delphi-Quelltext
1:
lvHighscore.Items.EndUpdate;					

nicht wirklich
Ich weiß, dass es am Anfang des Eintrages und am Ende hinmuss. Die richtige Stelle aber nicht :D

Zu dem Startproblem habe ich leider auch noch nichts. Die if Definition 1. mal TForm1.Button1Click wird es ja wohl nicht geben :D
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 08.01.10 00:52 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
Data := Pointer(StrToInt(SubItems.Add[Points])); // Punktestand zum Sortieren					
habe ich zu
ausblenden Delphi-Quelltext
1:
Data := Pointer(SubItems[Points]); // Punktestand zum Sortieren					
gemacht...
Da dir der Compiler das nicht abnehmen wird, solltest du bereits von selbst darauf gekommen sein, dass da was so ganz grundsätzlich nicht stimmen kann. :? Points ist die Formulareigenschaft (vom Typ Integer!), die die Anzahl der Punkte im Spiel zählt. Du willst aber doch gar nicht (primär) danach sortieren, sondern nach der benötigten Zeit. Also kann das konzeptionell doch schon nicht stimmen (mal abgesehen von der Syntax). :nixweiss: //EDIT: Ich sehe gerade, dass das doch syntaktisch korrekt ist, das lässt sich kompilieren. :nixweiss: Ist aber logischer Quatsch... :lol:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
der Listviewfehler ist immer noch da.

Ich finde die stellen für
ausblenden Delphi-Quelltext
1:
lvHighscore.Items.BeginUpdate;					

und
ausblenden Delphi-Quelltext
1:
lvHighscore.Items.EndUpdate;					

nicht wirklich
Ich weiß, dass es am Anfang des Eintrages und am Ende hinmuss. Die richtige Stelle aber nicht
:gruebel: Schauen wir uns den Codeteil nochmal an:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
            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(LbGebrauchteZeit.Caption); // und für die Ausgabe
                SubItems.Add(IntToStr(Points));
                SubItems.Add(IntToStr(Moves));
                SubItems.Add(DateTimeToStr(Now)); // Datum eintragen
              end;
              Form2.ShowModal;
Mit Form2.lvHighscore.Items.Add wird ein neues ListItem (=Score) angelegt. Davor muss das .BeginUpdate; stehen. Und wenn das ListItem fertig befüllt ist, kommt wieder ein .EndUpdate; - im Prinzip genau so, wie beim Laden. :idea:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Zu dem Startproblem habe ich leider auch noch nichts. Die if Definition 1. mal TForm1.Button1Click wird es ja wohl nicht geben :D
Nein, die gibt es sicher nicht. Nächster Versuch? :D

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: Mo 11.01.10 13:25 
Super, ich muss das Programm doch noch heute abgegeben und nicht wie anderst geplant nächste Woche.

Werden heute Abend versuchen noch die Vorschläge von dir soweit wie möglich zu implentieren.
Ansonsten müssen sie wohl auf Grund Zeitmangels wegbleiben :(

Mal ne kleine Frage am Rande (traue mich kaum zu fragen), hast du morgen Dienstag (15:15-17:00) die Möglichkeit ab und zu mal hier reinzuschauen? Das benotete Programmieren wäre morgen und ich werde sicherlich mal etwas (:D) Hilfestellung benötigen.

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: Mo 11.01.10 14:15 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Werden heute Abend versuchen noch die Vorschläge von dir soweit wie möglich zu implentieren.
Na dann viel Erfolg. :zustimm:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Mal ne kleine Frage am Rande (traue mich kaum zu fragen), hast du morgen Dienstag (15:15-17:00) die Möglichkeit ab und zu mal hier reinzuschauen? Das benotete Programmieren wäre morgen und ich werde sicherlich mal etwas (:D) Hilfestellung benötigen.
Alter Schwede... 8) Wir sind hier keine Klausuren-Schreib-Agentur. :roll:

Du kannst gerne Fragen stellen, wenn diese konkret und verständlich sind, gibt es sicher auch Antworten hier. Meine persönliche Unterstützung gibt´s nach Zahlung eines angemessenen Betrags im voraus auf mein Konto. :lol:

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: Mo 11.01.10 14:25 
Beim Thema HTML (Homepages mit Joomla) habe ich für 3 Klassenkameraden (wir hatten abwechselnd Info) die Aufgaben von zu Hause aus erledigt :D

Wie hoch ist den der Betrag :D (bitte per PN) ?
Ich will Delphi eigentlich auch nur rumbekommen, das liegt mir einfach nicht.

Danke nochmal für alle Hilfen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 11.01.10 14:53 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Wie hoch ist den der Betrag :D (bitte per PN) ?
Ich will Delphi eigentlich auch nur rumbekommen, das liegt mir einfach nicht.
In diesem Fall sollest du wegen realistischer Beurteilung deiner Leistungen damit rechnen, dass du hier morgen gar keine Hilfe kriegst. :nixweiss: Hart, aber gerecht. :|

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Danke nochmal für alle Hilfen.
Bitte, nur leider vergebens. Ich hatte gehofft, dass du vielleicht doch noch eigenes Interesse entwickeln würdest... :(

cu :wave:
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: Mo 11.01.10 18:36 
Kommt drauf an, ob du mit eigenem Interesse meinst, dass ich mich weiterhin in Delphi reinknieen werde, dann muss ich dich leider enttäuschen.
Das ich etwas gelernt habe, ja. Ich sehe auch zwischen HTML und C++ einige Verbindungen, aber mir persönlich sagt HTML z.B. mehr zu.
:)

B2T:

Das müsste dann stimmen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Form2.lvHighscore.Items.BeginUpdate;
              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.lvHighscore.Items.EndUpdate;

?

Nur leider bekomme ich es mit dem automatisch sortieren nach dem Eintragen nicht hin.
All meine Versuche enden mit dem Fehler undeklarierter Bezeichner?!?

Die richtige Stelle, um die Zeit erst beim 1. Klick zu erfassen, habe ich auch noch nicht gefunden?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 11.01.10 18:49 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Das müsste dann stimmen:
Jap, würde ich sagen. ;) Der Laufzeitfehler sollte dann auch weg sein.

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Nur leider bekomme ich es mit dem automatisch sortieren nach dem Eintragen nicht hin.
All meine Versuche enden mit dem Fehler undeklarierter Bezeichner?!?
Dann zeig mal "all deine Versuche", wird schon nicht so schwer sein. :)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Die richtige Stelle, um die Zeit erst beim 1. Klick zu erfassen, habe ich auch noch nicht gefunden?
Die habe ich dir schon genannt:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde ja mal sagen, dass die Stelle wo die Klicks verarbeitet werden, verdächtig gut aussieht. :zwinker:
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: Mo 11.01.10 19:03 
Zitat:
Dann zeig mal "all deine Versuche", wird schon nicht so schwer sein. :)

1. Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data));
2. Data := DateTimeToStr(SubItems[Form1.LbGebrauchteZeit.Caption]);
3. Data := Pointer(SubItems[1]); // Punktestand zum Sortieren
Zitat:
Ich würde ja mal sagen, dass die Stelle wo die Klicks verarbeitet werden, verdächtig gut aussieht. :zwinker:

Verarbeitet werden sie hier:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
procedure TForm1.Button1Click(Sender: TObject);
  var
    Differenz: Integer;
    Zeit1, Zeit2: TDateTime;

  // Herausfinden, ob alle Karten aufgedeckt sind
  function AllCardsOpen: Boolean;
    var
      i: Integer;
  begin
    Result := FALSE; // default: noch nicht alle offen
    for i := MIN to MAX do // über alle Karten
      if (Cards[i].Button.Visible) then // Karte verdeckt?
        Exit; // ja, dann nicht weiter suchen
    Result := TRUE; // alle Karten sind offen
  end;
  
begin
  (Sender as TButton).Visible := FALSE; // Button wegnehmen
  case GameState of
    gsOpenCards0: // kein Feld in der "Warteschlange"
      begin
        Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
        GameState := gsOpenCards1; // jetzt ist ein Feld offen
      end;
    gsOpenCards1
// ein Feld ist schon offen
      begin
        Move2 := (Sender as TButton).Tag; // 2. Zug vermerken
        // Pärchen gefunden?
       ...
        end
        else begin
          GameState := gsOpenCards2;
          Moves := Moves +1// sonst ein Zug mehr
        end;
      end;
    gsOpenCards2: // zwei (ungleiche) Felder vom Zug vorher noch offen
      begin
        Cards[Move1].Button.Visible := TRUE; // alte Felder verdecken
        Cards[Move2].Button.Visible := TRUE;
        Move1 := (Sender as TButton).Tag; // den neuen Zug vermerken
        GameState := gsOpenCards1;
      end;
  end;
end;

Da würde ich das Augenmerk legen?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 11.01.10 19:44 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Dann zeig mal "all deine Versuche", wird schon nicht so schwer sein. :)

1. Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data));
Was die Zuweisung auf Compare hier zu suchen hat, müsstest du mir nochmal erklären. :? Sorry, aber sieht wirklich so aus, als ob du mangels Plan einfach nur rätst. :nixweiss:
user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
2. Data := DateTimeToStr(SubItems[Form1.LbGebrauchteZeit.Caption]);
Schon besser. Da du aber bereits mehrfach den Hinweis bekommen hast, dass die Eigenschaft .Data ein Pointer ist, wird die Zuweisung eines Strings (DateTimeToStr) wohl nicht ganz passen können. :idea: Wenn du mir jetzt noch sagen kannst, warum das .SubItems[] da auftaucht, dann kommen wir weiter. :gruebel:
user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
3. Data := Pointer(SubItems[1]); // Punktestand zum Sortieren
Wenn du diesen Ansatz mit dem 2. kombinierst und noch etwas mehr Logik rein bringst, wird´s was. :)

Nochmal zur Erinnerung:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Du willst aber doch gar nicht (primär) danach sortieren, sondern nach der benötigten Zeit.


user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Ich würde ja mal sagen, dass die Stelle wo die Klicks verarbeitet werden, verdächtig gut aussieht. :zwinker:

Verarbeitet werden sie hier:
[...]
Da würde ich das Augenmerk legen?
Jup. ;)

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: Mo 11.01.10 22:29 
Dann klingt mir dies hier am logistischen:
ausblenden Delphi-Quelltext
1:
          Data := Pointer(Form2.lvHighscore.Items[1]); // Punktestand zum Sortieren					


[1] ist doch Benötigte Zeit?
[0] Name
[2] Paare
[3] Fehlversuche
[4] Datum

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

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 11.01.10 22:42 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Dann klingt mir dies hier am logistischen:
ausblenden Delphi-Quelltext
1:
Data := Pointer(Form2.lvHighscore.Items[1]); // Punktestand zum Sortieren					


[1] ist doch Benötigte Zeit?
Ja, aber im ListItem (also links vom ":="). ;) Der Ausdruck Form2.lvHighscore.Items[1] ist ungültig. :idea: Du möchtest aber die benötigte Zeit haben, genau diese Zeit schreibst du doch extra in ein (verstecktes) Label auf dem Formular (btw: sowas gehört nicht in ein Label, sondern in eine Klassen-Eigenschaft). Da es in einem Label steht (Label.Caption ist ein String), musst du es allerdings vor dem Typecast auf Pointer() noch in einen Integer umwandeln. Das hast du schonmal gemacht, sollte also auch hier klappen. :)

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: Mo 11.01.10 22:55 
ausblenden Delphi-Quelltext
1:
Data :=  Pointer(Form2.lvHighscore.Items[StrToInt(LbGebrauchteZeit.Caption)]); // Punktestand zum Sortieren					

?
Geht aber auch irgendwie nicht :(

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Form2.lvHighscore.Items.BeginUpdate;
              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
                Data :=  Pointer(Form2.lvHighscore.Items[StrToInt(LbGebrauchteZeit.Caption)]); // Punktestand zum Sortieren
              end;
              Form2.lvHighscore.Items.EndUpdate;
              Form2.ShowModal;


Ich bin am Verzweifeln...

das mit dem 1. Klick und dann erst die Zeit nehmen bekomme ich auch nicht hin...
obwohl du mir ja die Stelle zum Einbinden eigentlich bestätigt hast.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
case GameState of
    gsOpenCards0: // kein Feld in der "Warteschlange"
      begin
        Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
        GameState := gsOpenCards1; // jetzt ist ein Feld offen
      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: Mo 11.01.10 23:03 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
Data :=  Pointer(Form2.lvHighscore.Items[StrToInt(LbGebrauchteZeit.Caption)]); // Punktestand zum Sortieren					

?
Geht aber auch irgendwie nicht :(
Klar, da ist ja auch immer noch dieses unselige "Form2.lvHighscore.Items[]" drum rum. :nixweiss: Wozu soll das gut sein? :gruebel:

Ansonsten: :zustimm:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Ich bin am Verzweifeln...
Das ist normal. ;)

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
das mit dem 1. Klick und dann erst die Zeit nehmen bekomme ich auch nicht hin...
obwohl du mir ja die Stelle zum Einbinden eigentlich bestätigt hast.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
case GameState of
    gsOpenCards0: // kein Feld in der "Warteschlange"
      begin
        Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
        GameState := gsOpenCards1; // jetzt ist ein Feld offen
      end;
Das ist genau die Stelle. Jetzt musst du dir noch überlegen, woran man erkennen kann, dass ein neues Spiel gestartet wurde. Wenn das so ist, die Zeit merken, fertig. :)

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: Mo 11.01.10 23:25 
Super das Sortieren klappt nun :)

Auch wenn es jetzt nur nach gebrauchter Zeit sortiert wird und nicht noch falls diese gleich sein sollte nach etwas anderem. Geht bestimmt auch? Wieder mit ifs?

Das Zweite probiere ich gerade aus und mir ist auch eine Idee bekommen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
begin
  (Sender as TButton).Visible := FALSE; // Button wegnehmen
  case GameState of
    gsOpenCards0: // kein Feld in der "Warteschlange"
      begin
      if Moves := '' AND Points :=''
      then begin
         LbAnfangszeit.Caption := TimeToSTr(now)
         Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
         GameState := gsOpenCards1; // jetzt ist ein Feld offen
           end
      else begin
        Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
        GameState := gsOpenCards1; // jetzt ist ein Feld offen
      end;
      end;

Nur ist da wohl nen Fehler drinnen :D
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 11.01.10 23:35 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Super das Sortieren klappt nun :)

Auch wenn es jetzt nur nach gebrauchter Zeit sortiert wird und nicht noch falls diese gleich sein sollte nach etwas anderem. Geht bestimmt auch?
Warum sollte das nicht klappen? :gruebel: Hast du die Vergleichsmethode nochmal geändert (die war doch schon fertig umgestellt)? :nixweiss:

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Das Zweite probiere ich gerade aus und mir ist auch eine Idee bekommen:
[...]
Nur ist da wohl nen Fehler drinnen :D
Könnte man so sagen. ;) Wenn Moves und Points = 0 ist, dann ist das noch kein Indiz dafür, dass ein neues Spiel im Gange ist. :? Ich würde das anders machen:
  • Du leerst den Inhalt des Startzeit-Labels in der Methode, die ein neues Spiel startet
  • In der Methode, die die Mausklicks bearbeitet schaust du nun, ob das Startzeit-Label leer ist; wenn ja, schreibst du die Startzeit rein
  • Damit wird auf jeden Fall der Spielstart korrekt abgefangen :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: Mo 11.01.10 23:44 
Also das Sortieren geht ja. Aber es wird halt nur nach der gebrauchten Zeit und nicht auch noch nach anderen Kriterien sortiert.

Also soll ich es so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 end;
  GameState := gsOpenCards0; // kein Feld offen
  Moves := 0;
  Points := 0;
  LbAnfangszeit.Caption:= '';
end;

und
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
begin
  (Sender as TButton).Visible := FALSE; // Button wegnehmen
  case GameState of
    gsOpenCards0: // kein Feld in der "Warteschlange"
        if LbAnfangszeit.Caption= ''
        then begin
        LbAnfangszeit.Caption := TimeToStr(now);
        Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
        GameState := gsOpenCards1; // jetzt ist ein Feld offen
        end
        else begin
        begin
        Move1 := (Sender as TButton).Tag; // Feld als 1. Zug merken
        GameState := gsOpenCards1; // jetzt ist ein Feld offen
        end;
      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: Mo 11.01.10 23:51 
Moin!

user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Also das Sortieren geht ja. Aber es wird halt nur nach der gebrauchten Zeit und nicht auch noch nach anderen Kriterien sortiert.
Wenn das deine aktuelle Vergleichsmethode ist, sollte das eigentlich die ganze Zeit schon laufen: :gruebel:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
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[1],Item2.SubItems[1]) // vergleiche die 3. Spalte
  else // sonst...
    Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data)); // vergleiche die Punkte/Zeit
end;


user profile iconVorschlag hat folgendes geschrieben Zum zitierten Posting springen:
Also soll ich es so machen:
[...]
?
Ist zwar ineffizient :? aber sollte klappen.

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: Mo 11.01.10 23:54 
Also meine Vergleichsmehtode ist folgende:
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 4. Spalte (auf Textbasis!)
  else // sonst...
    Compare := CompareValue(Integer(Item1.Data),Integer(Item2.Data)); // vergleiche die Punkte/Zeit
end;


2. mmh also hattest du es dir anderst gedacht?
Also funktionieren tut es zumindestens.
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.