Autor |
Beitrag |
Mitmischer 1703
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Fr 06.11.09 18:41
Hi DF!
Ich hab gleich probiert in Prism Großteile von Delphi einzubauen Im Moment stehe ich vor folgendem Problem
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?! 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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 06.11.09 18: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:
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
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Fr 06.11.09 18:49
Okay, danke!
Mit welcher Sichtbarkeitsstufe kann man assembly denn in Pascal vergleichen?
_________________ Die Lösung ist nicht siebzehn.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 06.11.09 18:51
Kennt pascal inzwischen Typensichtbarkeit?
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
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Fr 06.11.09 18:57
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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 06.11.09 19:00
Mitmischer 1703 hat folgendes geschrieben : | 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
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Fr 06.11.09 19:06
Achso, okay
Danke!
_________________ Die Lösung ist nicht siebzehn.
|
|
|