AGB  ·  Datenschutz  ·  Impressum  







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

Hilfe mit Textadventure

Ein Thema von MW28 · begonnen am 8. Jan 2015 · letzter Beitrag vom 9. Jan 2015
Antwort Antwort
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Hilfe mit Textadventure

  Alt 9. Jan 2015, 13:16
Eine unschöne Sache ist da noch drin. Der leere constructor.

Konstruktoren dienen dazu, die einzelnen Felder des Objekts zu initialisieren. So, wie du es nun hast, gibt es ein Problem: Nach dem Aufruf von TRaum.Create; sind die Felder FNorth...FEast von TRaum mit "irgendwas" gefüllt. Ein Test auf nil (um festzustellen, das es in diese Richtung nicht weitergeht) kann also problemlos ergeben "da gehts weiter", denn "irgendwas" ist nicht nil. Du arbeitest dann mit ungültigen Daten, was direkt in eine Schutzverletzung mündet.

Nutze den Konstruktor also, um solche Probleme gar nicht erst entstehen zu lassen und setze die Felder von TRaum auf nil. Das erspart viel Ärger und womöglich aufwändige Fehlersucherei.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Hilfe mit Textadventure

  Alt 9. Jan 2015, 13:20
Das der leere Konstruktor unnötig ist stimmt zwar, die Begründung ist aber Quatsch. Die Felder sind definitiv mit Nil initialisiert. Das verwechselst du mit lokalen Variablen in einer Methode, die sind es nämlich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Hilfe mit Textadventure

  Alt 9. Jan 2015, 13:30
Das der leere Konstruktor unnötig ist stimmt zwar, die Begründung ist aber Quatsch. Die Felder sind definitiv mit Nil initialisiert. Das verwechselst du mit lokalen Variablen in einer Methode, die sind es nämlich nicht.
So isses
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Hilfe mit Textadventure

  Alt 9. Jan 2015, 13:42
Das der leere Konstruktor unnötig ist stimmt zwar, die Begründung ist aber Quatsch. Die Felder sind definitiv mit Nil initialisiert. Das verwechselst du mit lokalen Variablen in einer Methode, die sind es nämlich nicht.
So isses
Mal isses so, mal isses so, machen und dann weiß man was man hat.
(Dann gibt es auch kein "Oh, das hab' ich glaub' ich verwechselt")

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Hilfe mit Textadventure

  Alt 9. Jan 2015, 13:45
Lokale Variablen werden nicht initialisiert, das sollte bekannt sein.
Record Felder mit nicht gemanagten Typen, sind nicht initialisiert, sollte auch bekannt sein.
Der Rest ist initialisiert.

Was ist daran mal so mal so?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 9. Jan 2015 um 13:48 Uhr)
  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 07:32 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