AGB  ·  Datenschutz  ·  Impressum  







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

typen probleme

Ein Thema von StefanDP · begonnen am 1. Mai 2004 · letzter Beitrag vom 2. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#1

typen probleme

  Alt 1. Mai 2004, 22:31
hi!
ich habe folgendes problem:

ich habe meine typen in eine .pas ausgelagert: (vereinfacht)
Delphi-Quellcode:
unit Typen;

interface
type

  TSpielfeld = class
  public
    Datei: String; // Level-Datei
  end;

  TSpiel = class
  public
    Spielfeld: TSpielfeld; // ein Spielfeld
  end;

implementation

end.
in meinem hauptprogramm möchte ich jetzt eine variable Spiel vom Typ TSpiel haben!
das funktioniert auch soweit, nur kann ich dann z.b. Spiel.Spielfeld.Datei := nichts zuweisen --> Fehler!

das hauptprogramm sieh vereinfacht so aus:
Delphi-Quellcode:
unit Main;

interface

uses
    ...Typen;

implementation
var
    Spiel: TSpiel;

...
procedure LevelLaden(datei: String);
begin
  Spiel.Spielfeld.Datei := datei;
  // oder auch
  Spiel.Spielfeld.Datei := 'bla.txt';
end;
beim kompilieren kommt jetzt immer ein fehler: "zugriffsverletzunge ..."

kann mir jemand nen tip geben? wäre echt sehr dankbar

mfg
stefan
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: typen probleme

  Alt 1. Mai 2004, 22:45
Delphi-Quellcode:
Spiel := TSpiel.Create;
Spiel.Datei := Dateiname;
Vergiss nicht dein Objekt zu erstellen, probier mal die Sache mit Create. Es kann sein dass du noch einen Owner angeben musst, in dem Fall lautet die Zeile
Spiel := TSpiel.Create(Self);
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#3

Re: typen probleme

  Alt 1. Mai 2004, 23:15
geht nicht!
  Mit Zitat antworten Zitat
Skiron

Registriert seit: 14. Dez 2003
153 Beiträge
 
#4

Re: typen probleme

  Alt 1. Mai 2004, 23:18
wo genau kommt deine Zugriffsverletzung?
in welcher zeile?

im fall musst du auch noch das Spielfeld erstellen

Spiel.SpielFeld := TSpielFeld.Create;
Mann zu Frau:
Zieh dich aus, wir müssen reden!
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#5

Re: typen probleme

  Alt 1. Mai 2004, 23:23
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type
  TSpielfeld = class(Tobject)
  public
    Datei : String; // Level-Datei
  end;
  TSpiel = class(Tobject)
  public
    Spielfeld: TSpielfeld; // ein Spielfeld
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x: TSpiel;
begin
x:=TSpiel.Create;
x.Spielfeld:=TSpielfeld.Create;
x.Spielfeld.Datei:='KA';
ShowMessage(x.Spielfeld.Datei);
end;

end.
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#6

Re: typen probleme

  Alt 1. Mai 2004, 23:27
Zitat von Skiron:
wo genau kommt deine Zugriffsverletzung?
in welcher zeile?

im fall musst du auch noch das Spielfeld erstellen

Spiel.SpielFeld := TSpielFeld.Create;
*ganz tief vor dir verbeug und hochachtung aussprech*

danke! das ist der richtige lösungsansatz!

mfg
stefan

  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: typen probleme

  Alt 2. Mai 2004, 00:04
Das sollte eigentlich in einem Contructor erfolgen.
Delphi-Quellcode:
type
  TSpielfeld = class(TObject)
  public
    Datei: string; // Level-Datei
    constructor create; overload;
    constructor create(const FileName: string); overload;
  end;

  TSpiel = class(TObject)
  public
    Spielfeld: TSpielfeld; // ein Spielfeld
    constructor create; overload;
    constructor create(const FileName: string); overload;
  end;

implementation

{ TSpiel }

constructor TSpiel.create(const FileName: string);
begin
  inherited create;
  Spielfeld := TSpielfeld.Create(FileName);
end;

constructor TSpiel.create;
begin
  inherited create;
  Spielfeld := TSpielfeld.Create;
end;

{ TSpielfeld }

constructor TSpielfeld.create;
begin
  inherited create;
end;

constructor TSpielfeld.create(const FileName: string);
begin
  inherited create;
  Datei := FileName;
end;
So könnte man es dann verwenden
Delphi-Quellcode:
var
  Spiel: TSPiel;
begin
  Spiel := TSpiel.create('BlaBla.Txt');
  try
    ShowMessage(Spiel.Spielfeld.Datei);
  finally
    FreeAndNil(Spiel);
  end;
end;
oder...
Delphi-Quellcode:
var
  Spiel: TSPiel;
begin
  Spiel := TSpiel.create;
  try
    Spiel.SpielFeld.Datei := 'BlaBla.Txt';
    ShowMessage(Spiel.Spielfeld.Datei);
  finally
    FreeAndNil(Spiel);
  end;
end;
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#8

Re: typen probleme

  Alt 2. Mai 2004, 00:08
danke für deine bemühungen! aber ich hab jetzt teilweise sachen in einen record geändert!
nurnoch TSpiel selber ist jetzt eine Class, d.h. ich brauch auch nur sie createn (und wieder freigeben...)

mfg
stefan

  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: typen probleme

  Alt 2. Mai 2004, 00:10
Lass mal...
Ich hatte den Destructor vergessen.
Man muss das Spielfeld auch freigeben, wenn das Spiel freigegeben wird.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: typen probleme

  Alt 2. Mai 2004, 06:54
Eine Verständnisfrage:
Wieso hast du zwei Constructoren gemacht? Einen mit und einen ohne Filename. Muss man da zwei machen?? Oder hast du das nur einfach so gemacht??
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:17 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