AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi eigener Typ in Form1, wie von einer Unit zugreifen?
Thema durchsuchen
Ansicht
Themen-Optionen

eigener Typ in Form1, wie von einer Unit zugreifen?

Ein Thema von Mazel · begonnen am 8. Aug 2006 · letzter Beitrag vom 9. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 13:56
Hallo,

ich habe ein kleines Problem mit einen eigenen Typ, es ist eine Klasse. Ich habe eine einzelne Unit in der einige Prozeduren sind, nun kann ich aber leider nicht auf den Typ zugreifen, obwohl ich die Form1 in der uses Klausel eingebunden habe:

Delphi-Quellcode:
//Form1
unit Form_1;

interface

uses
 Windows, Messages, SysUtils, ..., Graphics, Controls, Forms;

type
 TMediaObject = class //mein eigener Typ
  private
    { Private-Deklarationen }
    PCharFileName: PChar;
    FileName: String;
    FileExt: String;
    FileType: Integer;
  public
    { Public-Deklarationen }
  end;

type
 TForm1 = class(TForm)
    MainMenu: TMainMenu;
    FileM: TMenuItem;
    ..
    ..
    
var
 Form1: TForm1;
 MediaObject: TMediaObject;
Delphi-Quellcode:
unit Unit1;

interface

uses
 Forms, Form_1, ..., UnitConst, IniFiles Dialogs, ComCtrls;
 
 function SetData(FileName: String): Boolean;
 function InstallExt(Ext, ExtDescr, FileDescr, OpenWith: String): Boolean;
 function UnInstallExt(Ext, ExtDescr: String): Boolean;
 procedure GetError(Msg, Code: String);
 procedure SetFormsPosition(TopForm, X1, X2, X3: Integer);
 procedure RestoreSettings;
 
implementation


function SetData(FileName: String): Boolean;
begin
 If MediaObject.FileName = FileName then Result:=True; //Hier ist das Problem
end;
Wie kann ich auf den Typ bzw. auf die Variable "MediaObject", die global in der Form1 deklariert ist, in der Unit1 zugreifen? Muss ich dazu den Typ woanders hinterlegen, wenn ja: wo?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#2

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 13:59
If MediaObject.FileName = FileName then Result:=True; //Hier ist das Problem Es wäre Zuckersüß von dir, wenn du uns jetzt auch noch sagen würdest was das für ein Problem ist, was sagt denn der Compiler da es eigentlich funktionieren müsste...
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:01
Wurde das Objekt irgendwo erzeugt?
Hats du die Unit in deiner zweiten Unit eingebunden(in der Uses-klausel)?

Edit: zum Erzeugen würde ich den Initialization-Bereich nehmen, da du das Objekt scheinbar dauerhaft/von Anfang an brauchst.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#4

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:04
Oh,

sorry, habe ich vergessen:

Delphi-Quellcode:
//auch in der Unit1
 MediaObject:=TMediaObject.Create; //erzeugen kann ich es aber nicht auf die Variablen zugreifen
 MediaObject.FileName:='test'; //hier der Fehler
[Fehler] Unit1.pas(1080): Undefinierter Bezeichner: 'FileName'
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#5

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:08
Du musst die var Filename als public deklarieren
Delphi-Quellcode:
public
  filename: string;
  ...
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#6

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:10
Weil die Variablen Private sind tu sie in den public Block dann gehts

mfg


//ROT
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#7

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:10
Jetzt will ich aber auch noch

In private kannst du nur im TMediaObject zugreifen, nicht außerhalb.
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#8

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:11


Ja, danke. Da der Type ganz oben in der Form deklariert ist, habe ich alle Variablen private deklariert, weil ich dachte die würden dann sowieso public sein. Ich weis nicht wie ich auf den Gedanken gekommen bin

Danke

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 14:14
Grüße,

das problem ist, dass FileName: String; im private-Bereich deklariert ist. Das ist nicht unbedingt ein Problem aber nur die halbe Miete.
1. Benenne aber vorher FileName in FFileName um! Das ist Delphikonform. Attribute einer Klasse gehen ein F zuvor.
2. Erstelle im public- Bereich eine property für FileName:

property FileName: String read FFileName write FFileName; Über diese Property kannst du dann aus anderen Units darauf zugreifen.
Alles was im private erstellt ist kann nur innerhalb derselben unit verwendet werden.


PS:
Zitat:
In private kannst du nur im TMediaObject zugreifen, nicht außerhalb.
ist fast richtig
Du kannst innerhalb der selben unit überall darauf zugreifen. In D06 (vielleicht auch D05 ?) wurde ein neuer Bereich strictprivate eingeführt. Attribute in diesem Bereich können nur von dem Objekt gesehen werden
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#10

Re: eigener Typ in Form1, wie von einer Unit zugreifen?

  Alt 8. Aug 2006, 16:57
Hi,

warum muss ich eine property erstellen, dass kenn ich nur aus dem Erstellen eigener Komponenten, dort verwende ich auch das "F" vor dem eigentlichen Bezeichner.

In einm eigenen Typ hab ich das noch nie gemacht. Die Form ist doch auch eine Klasse vom Typ TForm
Delphi-Quellcode:
type
   TForm1 = class(TForm)
   private
     Button1: TButton;
     { Private-Deklarationen }
   public
     { Public-Deklarationen }
   end;
Button1 ist zwar keine Variable aber trägt hier auch kein "F".

OffTopic:
Wenn ich Variablen deklariere, wo soll ich sie deklarieren? Ich kenne viele Sourecodes bei denen die Variablen im private oder public Abschnitt oder unter var (global oder lokal) deklariert werden. ich selber deklariere sie immer unter var. Was ist nun richtig (bzw. Delphikonform) ?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  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 00:54 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