AGB  ·  Datenschutz  ·  Impressum  







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

Werte an Objekt übergeben

Ein Thema von Martin.Ghosts · begonnen am 4. Sep 2006 · letzter Beitrag vom 4. Sep 2006
Antwort Antwort
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#1

Werte an Objekt übergeben

  Alt 4. Sep 2006, 19:41
Hallo erst mal an alle,

ich möchte Werte an ein selbst erstelltes Objekt über eine Procedure übergeben.

eigene Klasse:
Delphi-Quellcode:
type
  TRoom = class
    Description: String;
    Norden, Osten, Sueden, Westen: TRoom;
    procedure SetAusgaenge (norden, osten, sueden, westen: TRoom);
  end;
aufrufen der Procedure:
Delphi-Quellcode:
procedure TForm1.CreateComputerRoom;
begin
  Computerraum:= TRoom.Create;
  Computerraum.Description:= ('Du stehst im Computerraum!');
  Computerraum.SetAusgaenge(Kueche, nil, nil, nil);
end;
Procedure:
Delphi-Quellcode:
procedure TRoom.SetAusgaenge(norden, osten, sueden, westen: TRoom);
begin
  self.Norden:= norden;
  self.Osten:= osten;
  self.Sueden:= sueden;
  self.Westen:= westen;
end;
Das Problem ist folgendes, dass in diesem Fall Computerraum.Norden = nil ist obwohl er eigendlich = Kueche sein sollte. Habe schon mal gestern eine Stunde versucht, einen Fehler zu finden und heute einfach nochmal den Quelltext neu getippt, aber ohne Erfolg.
Kann jemand einen Fehler von mir erkennen?

Vielen Dank schon mal, Martin.Ghosts
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Werte an Objekt übergeben

  Alt 4. Sep 2006, 19:44
Ist denn vielleicht Kueche = nil?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#3

Re: Werte an Objekt übergeben

  Alt 4. Sep 2006, 20:06
Inwiefern kann Kueche = nil sein? Kueche ist doch nur der Name eines gleichen Objektes mit den Attributen Norden, Osten, Sueden, Westen, die als Zeiger funktionieren. Meiner Meinug nach können nur diese = nil sein.(?)
Delphi-Quellcode:
procedure TForm1.CreateKitchen;
begin
  Kueche:= TRoom.Create;
  Kueche.Description:= ('Du stehst in der Küche!');
  Kueche.SetAusgaenge(nil, nil, Kueche, nil);
end;


procedure TForm1.CreateTeacherRoom;
begin
  Lehrerzimmer:= TRoom.Create;
  Lehrerzimmer.Description:= ('Du stehst im Lehrerzimmer!');
  Lehrerzimmer.SetAusgaenge(Lehrerzimmer, nil, Computerraum, nil);
end;
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Werte an Objekt übergeben

  Alt 4. Sep 2006, 20:10
Wenn du CreateComputerRoom vor CreateKitchen aufrufst, dann ist Kueche undefiniert und zeigt auf eine ungültige Speicherstelle.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Werte an Objekt übergeben

  Alt 4. Sep 2006, 20:31
Zitat von 3_of_8:
Wenn du CreateComputerRoom vor CreateKitchen aufrufst, dann ist Kueche undefiniert und zeigt auf eine ungültige Speicherstelle.
Bzw. wenn die Variable Kueche eine globale Variable ist oder in einer Klasse definiert ist (z.B. deine Form), dann ist diese sogar Nil und nicht undefiniert.

Du gibst bei dem Aufruf nur die in der Variable enthaltenen Instanz weiter. Wenn du keine Instanz erzeugst und der Variablen zuweist, dann ist diese uninitialisiert. Abhängig von ihrem Deklarationsort enthält sie Nil oder einen zufälligen Wert.
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#6

Re: Werte an Objekt übergeben

  Alt 4. Sep 2006, 20:44
So, Fehler gefunden. Ich hatte Kueche, Lehrerzimmer noch nicht erzeugt(wie 3_of_8 sagte). Ein absolut beknackter Fehler, aber ich glaube, ich hätte noch lange nach ihm gesucht. Tja, aus Fehlern lehrnt man ja bekanntlich
Nochmal vielen Dank.
  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:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz