Autor Beitrag
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Fr 06.11.09 19:41 
Hi DF!

Ich hab gleich probiert in Prism Großteile von Delphi einzubauen Im Moment stehe ich vor folgendem Problem

ausblenden volle Höhe Delphi-Prism-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
namespace WindowsApplication1;

interface

uses
  System.Collections.Generic,
  System.Linq,
  System.Text;

type
  Nations =  (
  n1, n2, n3);

  Army = record
  private
  public

  end;

  BeeNation = public class
  private
   fWorkers : Integer;
   fNation : Nations;
   fArmy : Army;
   
  protected
  public
    property Workers : Integer read fWorkers;
    property Nation : Nations read fNation;
  end;
  
implementation

end.


1. Er compiliert durch und wirft mir als Fehler: Fehler 1 (PE114) Der aus Typ "WindowsApplication1.BeeNation" verwendete Typ "WindowsApplication1.Nations" muss public sein H:\Backup\Borland\Delphi Prism\BeeWars\BeeWars\WindowsApplication1\BeeNation.pas 29 21 WindowsApplication1

Es hapert an der Property Nation vom Typ Nations - Ich verstehe jetzt nicht, warum Nations private sein soll?! :nixweiss: Es ist doch eigentlich ein ganz normaler Typ - die property Workers funzt ja auch für den Typen Integer!

_________________
Die Lösung ist nicht siebzehn.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20329
Erhaltene Danke: 2116

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 06.11.09 19:48 
Typen, die Du ohne eine Sichtbarkeitsangabe deklarierst, haben standardmäßig die Sichtbarkeit assembly (äquivalent zu internal in C#).

Wenn Du also in einer public-Klasse eine public-Property hast, kann der Typ keine geringere Sichtbarkeit haben. Du musst Nations also so deklarieren:
ausblenden Delphi-Prism-Quelltext
1:
2:
Nations = public (
  n1, n2, n3);

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Mitmischer 1703 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Fr 06.11.09 19:49 
Okay, danke!

Mit welcher Sichtbarkeitsstufe kann man assembly denn in Pascal vergleichen?

_________________
Die Lösung ist nicht siebzehn.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20329
Erhaltene Danke: 2116

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 06.11.09 19:51 
Kennt pascal inzwischen Typensichtbarkeit? :gruebel:

assembly ist eigentlich sehr sprechend: Es ist nur innerhalb des Assemblies (also der DLL oder EXE) zu sehen, für andere Assemblies unsichtbar.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Mitmischer 1703 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Fr 06.11.09 19:57 
:shock: Aber dann müsste Nations doch sichtbar sein : gleiche EXE und sogar gleicher namespace ! :?

PS: Ich meinte Delphi / Object Pascal ;))

_________________
Die Lösung ist nicht siebzehn.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20329
Erhaltene Danke: 2116

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 06.11.09 20:00 
user profile iconMitmischer 1703 hat folgendes geschrieben Zum zitierten Posting springen:
:shock: Aber dann müsste Nations doch sichtbar sein : gleiche EXE und sogar gleicher namespace ! :?

Du willst aber ein public-Property in einem public-Typen damit deklarieren. Beides wäre auch außerhalb des Assemblies sichtbar. Da es ja aber nicht sein kann, dass der Name der Property außerhalb sichtbar ist, ihr Typ aber nicht, muss der auch public sein.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Mitmischer 1703 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Fr 06.11.09 20:06 
Achso, okay :autsch:

Danke!

_________________
Die Lösung ist nicht siebzehn.