AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Problem mit Schleifen/Array/??? - Brettspiel Mastermind
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Schleifen/Array/??? - Brettspiel Mastermind

Ein Thema von ka8578 · begonnen am 15. Okt 2020 · letzter Beitrag vom 19. Okt 2020
 
Benutzerbild von himitsu
himitsu

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

AW: Problem mit Schleifen/Array/??? - Brettspiel Mastermind

  Alt 16. Okt 2020, 08:38
Was mich jetzt am Meisten überrascht, erschreckender Weise, ist,
dass der Compiler hier wirklich keinen Fehler oder zumindestens eine Warnung wirft.


Zitat:
Delphi-Quellcode:
// Befüllen d. 2. Arrays (Umwandlung von string nach TRectangle)
  for J := 1 to 5 do
    rechtecke[J] := TRectangle(rechteckenamen[J]) ;

// wieder Testen (ja, es klappt)
  Form1.LbTest2.Text := string(rechtecke[1])+#13#10 +
    string(rechtecke[2])+#13#10 +
    string(rechtecke[3])+#13#10 +
    string(rechtecke[4])+#13#10 +
    string(rechtecke[5])+#13#10 ;
Klar, aber da du nun den Mist geaut hast, hast du es auch verdient, dass es knallt.
Man konvertiert keine "inkompatiblen" Typen ineinander.

TRectangle ist ein TObject und kein string.


FindComponent ist eine Methde, die ein Objekt dort findet, wo es über den Owner drin ist.
Delphi-Quellcode:
R := TRectangle.Create(TheOwner);
R.Name := 'abc';

...

R := TheOwner.FindComponent('abc');
Was man über den FormDesigner draufgelegt hat, das hat als Owner die Form.
Drum geht dort Self.FindCompoent() und in Methoden der eigenen Form, da kann man den Owner auch weglassen, daher einfach nur noch FindComponent().


Zitat:
string(rechteckenamen[5])
rechteckenamen ist schon ein String, also nutzlos zu casten.


Wenn du von Casts keine Ahnung hast, dann lasst es bitte sein.
Und lerne bitte zuerst wie man es richtig macht,
denn sonst machst du, so wie hier, nur das Speichermanagement kaputt und freust dich über das "schöne" Ergebnis, ein knallendes Feuerwerk.


Zitat:
Form1.Rec1_1.Fill.Color :=
Wenn dein Code in eine TForm1.Methode liegt, dann lass' unbedingt auch den Zugriff auf die globale Variable weg.
Falls du unbedingt etwas benötigst, dann verwende an diesen Stellen das Self.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Okt 2020 um 08:52 Uhr)
  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 14:37 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