AGB  ·  Datenschutz  ·  Impressum  







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

OOP Problem: kein Zugriff auf Prozeduren

Ein Thema von maximus Caesar · begonnen am 1. Nov 2004 · letzter Beitrag vom 1. Nov 2004
Antwort Antwort
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#1

OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 16:20
Hallo!
Ich habe ein OOP Problem!

Mein Code sieht so aus:
Delphi-Quellcode:
unit objekte;

interface

type
 TObjekt1 = class
  FTyp:String;
  FUsed:Boolean;
  FItems:Array [1..100] of String;
  FName:String;
  FAktion:String;
  FBild:String;
  FX:Integer;
  FY:Integer;
  procedure WriteTyp(Variable:String);
  procedure WriteUsed(Variable:Boolean);
  procedure WriteItem(Item:String; Position:Integer);
  procedure WriteName(Name:String);
  procedure WriteAktion(Aktion:String);
  procedure WriteBild(Bild:String);
  procedure WriteX(x:integer);
  procedure WriteY(y:Integer);
  function GetTyp:String;
  function GetUsed:Boolean;
  function GetItem(position:integer):String;
  function GetName:String;
  function GetAktion:String;
  function GetBild:String;
  function GetX:Integer;
  function GetY:Integer;
  property Typ : String Read FTyp Write FTyp;
 end;


implementation


// Prozeduren und Funktionen der Klasse "Objekt1"

 procedure TObjekt1.WriteTyp(Variable:String);
 begin
  FTyp:=Variable;
 end;

 procedure TObjekt1.WriteUsed(Variable:Boolean);
 begin
  FUsed:=Variable;
 end;

 procedure TObjekt1.WriteItem(Item:String; Position:Integer);
 begin
  FItems[Position]:=Item;
 end;

 procedure TObjekt1.WriteName(Name:String);
 begin
  FName:=Name;
 end;

 procedure TObjekt1.WriteAktion(Aktion:String);
 begin
  FAktion:=Aktion;
 end;

 procedure TOBjekt1.WriteBild(Bild:String);
 begin
  FBild:=Bild;
 end;

 procedure TObjekt1.WriteX(x:Integer);
 begin
  FX:=x;
 end;

 procedure TObjekt1.WriteY(y:Integer);
 begin
  FY:=y;
 end;

 function TObjekt1.GetTyp:String;
 begin
  result:=FTyp;
 end;

 function TObjekt1.GetUsed:Boolean;
 begin
  result:=FUsed;
 end;

 function TOBjekt1.GetItem(position:Integer):String;
 begin
  result:= FItems[position];
 end;

 function TObjekt1.GetName:String;
 begin
  result:=FName;
 end;

 function TObjekt1.GetAktion:String;
 begin
  result:=FAktion;
 end;

 function TObjekt1.GetBild:String;
 begin
  result:=FBild;
 end;

 function TObjekt1.GetX:Integer;
 begin
  result:=FX;
 end;
 
 function TObjekt1.GetY:Integer;
 begin
  result:=FY;
 end;






end.
Ich kann nicht z.B von einem Button aus nicht auf die Prozeduren zugreifen.
Wie kann ich dafür sorgen, dass dies möglich wird?

PS: auf den Property "Typ" kann ich auch nicht zugreifen!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 16:23
Das ist kein Wunder, alles in der Klasse ist private.
So müsste es gehen:
Delphi-Quellcode:
type
TObjekt1 = class
  FTyp:String;
  FUsed:Boolean;
  FItems:Array [1..100] of String;
  FName:String;
  FAktion:String;
  FBild:String;
  FX:Integer;
  FY:Integer;
 public
  procedure WriteTyp(Variable:String);
  procedure WriteUsed(Variable:Boolean);
  procedure WriteItem(Item:String; Position:Integer);
  procedure WriteName(Name:String);
  procedure WriteAktion(Aktion:String);
  procedure WriteBild(Bild:String);
  procedure WriteX(x:integer);
  procedure WriteY(y:Integer);
  function GetTyp:String;
  function GetUsed:Boolean;
  function GetItem(position:integer):String;
  function GetName:String;
  function GetAktion:String;
  function GetBild:String;
  function GetX:Integer;
  function GetY:Integer;
  property Typ : String Read FTyp Write FTyp;
end;
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 16:54
Funktioniert leider immer noch nicht!

Wenn ich jetzt ein neues Programm anfange,
uses objekte; reinschreibe und dann versuche auf das objekt zuzugreifen bekomme ich zwar Zugriff, aber nicht auf die Prozeduren und Funktionen!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 16:57
Versuchs doch mal mit einer Standardmäßigen Typ-Deklaration:
Delphi-Quellcode:
type
TObjekt1 = class
 private
  FTyp:String;
  FUsed:Boolean;
  FItems:Array [1..100] of String;
  FName:String;
  FAktion:String;
  FBild:String;
  FX:Integer;
  FY:Integer;
 published
  procedure WriteTyp(Variable:String);
  procedure WriteUsed(Variable:Boolean);
  procedure WriteItem(Item:String; Position:Integer);
  procedure WriteName(Name:String);
  procedure WriteAktion(Aktion:String);
  procedure WriteBild(Bild:String);
  procedure WriteX(x:integer);
  procedure WriteY(y:Integer);
  function GetTyp:String;
  function GetUsed:Boolean;
  function GetItem(position:integer):String;
  function GetName:String;
  function GetAktion:String;
  function GetBild:String;
  function GetX:Integer;
  function GetY:Integer;
  property Typ : String Read FTyp Write FTyp;
end;
Die Unterscheidet sich zwar kaum von der anderen, aber wenn es so nicht funktioniert, weiss ich auch nicht mehr weiter.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 17:00
IRgendwie hab ich das gefühl, dass du das mit der OOP noch nicht ganz verstanden hast. Was du da angelegt hast, ist eine Klasse. Ein Klasse ist quasi ein Bauplan für ein Objekt. Du musst jetzt erstmal selber ein Objekt erzeugen.

Dazu musst du eine Variable vom Typ TObjekt1 anlegen:

Delphi-Quellcode:
var
  Obj1: TObjekt1
Jetzt hast du aber nur einen Zeiger auf ein Objekt. Das Objekt selber existiert noch nicht. Du musst es als mit Obj1:=TObjekt1.Create noch selber erzeugen. Dann kannst du z.B. per Obj1.WriteTyp auf die Prozeduren zu greifen.

Am Ende musst du noch Obj1.Free aufrufen um den Speicherplatz wieder freizugeben.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 17:06
Danke!
Kannst du mir vielleicht das auch noch anhand von meinem Code zeigen?
Das währe sehr nett!

PS: Hast recht! Fange grad erst an mit OOP!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 17:15
Dann könnte evnetuell mein Tutorial http://tutorials.luckie-online.de hilfreich sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 17:16
Habs raus!
Danke für die Hilfe!
Bsp:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Obj1: TObjekt1;
begin
Obj1:=TObjekt1.Create;
Obj1.WriteTyp('TEST');
showmessage(Obj1.GetTyp);
end;
PS: Das Tutorial hab ich schon. Jetzt versteh ichs auch besser!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: OOP Problem: kein Zugriff auf Prozeduren

  Alt 1. Nov 2004, 19:10
Moin Caesar,

dazu gehört dann auch noch die Freigabe des Objektes:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Obj1: TObjekt1;
begin
  Obj1:=TObjekt1.Create; // Objekt erzeugen
  try
    // Mit dem Objekt arbeiten
    Obj1.WriteTyp('TEST');
    showmessage(Obj1.GetTyp);
  finally
    // Und wieder freigeben, wenn es nicht mehr benötigt wird
    FreeAndNil(Obj1);
  end;
end;
try/finally soll sicherstellen, dass das Objekt wieder freigegeben wird, selbst wenn im Try-Abschnitt ein Fehler (Exception) auftritt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 21:31 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