AGB  ·  Datenschutz  ·  Impressum  







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

Minesweeper

Ein Thema von saii · begonnen am 21. Mär 2015 · letzter Beitrag vom 29. Mär 2015
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#1

AW: Minesweeper

  Alt 23. Mär 2015, 00:24
Wenn jemand nicht auf uns und auch nicht auf den Compiler hört, dann hat er halt Pech.

Zitat:
Delphi-Quellcode:
h:=A;
j:=B;
for h:= 0 to 14 do
  begin
    for j:=0 to 14 do
Hier sollte der Compiler doch eigentlich auch eine Warnung ausgeben, aber wer liest das schon.
Zitat:
Delphi-Quellcode:
for i := 0 to Self.ComponentCount - 1 do
  begin
    if Self.Components[i].Name = g then
      Panel:=TPanel(Self.Components[i]);
  end;
Panel.Caption...
Auch hier sollte der Compiler meckern, denn für ihn ist es klar, daß Panel eventuell nicht zugewiesen sein könnte, falls Name = g nichts treffen würde.

9 Mal der selbe Code, nur durch ein +/-1 unterscheidend ... ja, das sieht nach einer zwei Schleifen aus.
Aber wenn ich das genau seh, dann frag ich mich, wieso man jedem einzelnem Panel bis zu 9 Mal den selben Text zuweisen sollte, denn genau das macht der Code, durch die h+j-Schleife und die inneren IFs/Schleifen.

FindCompoment wurde ja auch erwähnt, aber wenn man die Komponenten einmal einem zweidimensionalem Array zuweist, beim Programmstart, oder das Zeug garnicht erst umständlich in die Form geklickt hätte, sondern es dynamisch erzeugen und dabei gleich in dem Array speichern würde, was ja auch schon genannt wurde, dann wäre alles so viel einfacher.

Und warum werden A und B als Var-Parameter eingegeben, wo sie doch nur ausgelesen, aber niemals gesetzt werden?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Mär 2015 um 00:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Minesweeper

  Alt 23. Mär 2015, 14:12
Delphi-Quellcode:
for i := 0 to Self.ComponentCount - 1 do
  begin
    if Self.Components[i].Name = g then
      Panel:=TPanel(Self.Components[i]);
  end;
Panel.Caption...
Das ist doch an sich schon gruselig mit dem OI die ganzen Panels aufs Form zu klicken...
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Minesweeper

  Alt 23. Mär 2015, 16:50
@Mavarik

Für dich ist es gruselig. Ein Anfänger sieht da nur die Vorteile, der da einer wäre: da ist ein Feld, da klickt man drauf, da erhält man ein Ereignis. Man muss zwar 255 Panele plazieren und auswerten, aber der Hauptvorteil ist, man spart sich vier Zeilen Code über den man drei Minuten komplex nachdenken muss.

Ich persönlich hätte noch nicht mal Panels genommen.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Minesweeper

  Alt 23. Mär 2015, 17:02
aber der Hauptvorteil ist, man spart sich vier Zeilen Code
Nein ganz im Gegenteil...

Stundenlanges Panel's auf dem Form platzieren was man in 10 Sekunden und 2 for schleifen machen kann...

Abgesehen davon wird das Form auch in "endlicher" Zeit in die IDE geladen...

Außerdem habe ich die Pannels direct in meinem Array und muss die nicht erst wieder mühsam über die Componentenliste suchen...

Abgesehen von 200 onclick Handlern
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#5

AW: Minesweeper

  Alt 23. Mär 2015, 17:51
100 (10*10) Panels hab ich in nichtmal 20-30 Sekunden auf der Form platziert (Copy&Paste) ... aber dann muß/sollte man den Dingern auch noch einen Namen verpassen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Minesweeper

  Alt 23. Mär 2015, 18:10
@Mavarik

Ich hab nicht gesagt, dass man sich Code und Zeit spart, sondern, dass man sich paar Zeilen komplexen Code spart.
Angehängte Dateien
Dateityp: zip Panels.zip (2,0 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Minesweeper

  Alt 23. Mär 2015, 22:52
Ich glaube Du hast da etwas falsch verstanden...

MEIN Beispiel war doch so wie Dein Source...
  Mit Zitat antworten Zitat
saii

Registriert seit: 20. Feb 2015
22 Beiträge
 
#8

AW: Minesweeper

  Alt 24. Mär 2015, 15:13
Vielen Dank für die Kritik und Berichtigungen.
Manche Sachen die hier genannt werden probier ich halt aus, aber als quasi-Anfänger komm ich dann auch schnell nicht weiter.

Ich hab mich jetzt jedenfalls entschieden ein PanelArray zu generieren.
Meine Frage: Wie erstelle ich die Prozedur für das OnMouseDown-Ereignis?
Delphi-Quellcode:
begin
      Panel := TPanel.Create(Self);
      Panel.Parent := Self;
      Panel.Name := 'P_' + IntToStr(x) + '_' + IntToStr(y);
      Panel.Width := WH;
      Panel.Height := WH;
      Panel.Caption := '';
      Panel.Left := x1 + (x * WH);
      Panel.Top := y1 + (y * WH);
      Panel.OnMouseDown := PanelMatrixMouseDown( {?} );
    end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:50 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