![]() |
Delphi .Net Package Units "verstecken"
Hallo zusammen,
ich versuche ein Assembly zu erstellen was man von Delphi und auch VS.Net nutzen kann. .Net Libary war mi da das sinnvollste, bis ich dann versucht habe die in eine Delphi .net Anwendung einzubinden. Dann kam der schöne Fehler: Zitat:
naja muss man das verstehen? Aber Egal, dacht ich mir probier ich es mal mit nem Package wie es der Compiler schon wollte. Das ging dann auch ohne Probleme, bis darauf das man jetzt auf alle Units,funktionen und variablen im Package zugreifen kann. Da ich ncoh nie nen Package gemacht habe erstmal hilfe nachgeschaut... Gibt eine Compiler Direktive
Delphi-Quellcode:
, aber der Compiler schmeisst dann beim erstellen folgenden Fehler raus.
{$DENYPACKAGEUNIT ON}
[Pascal Error] E2223 $DENYPACKAGEUNIT 'unit2' cannot be put into a package Was ich also haben will ist, dass in Unit1 z.b. eine Klasse ist die man von aussen nutzen kann. Und in unit2 die Funktionen die die klasse aufruft, die versteckt sein sollen. Danke schon mal für eure Antworten Karsten |
Re: Delphi .Net Package Units "verstecken"
Delphi.Net kannst du für solche Dinge komplett vergessen '(IMO kann man das immer, aber hier ganz besonders).
D.Net hat keinerlei Ahnung für Sichtbarkeit von Typen. (nur für verschachtelte Subtypen) Willst du das in Pascal schreiben kannst du entweder ![]() ![]() Du kannst das also realistisch angehen, und C# nehmen, bzw Chrome, wenn es unbedingt Pascal sein muss. Oder du nimmst Delphi und deine Assemblies werden dich zwingen, extra die Borland.Delphi.dll mitzugeben. Außerdem ist eine Assembly, die mit Delphi.Net kompiliert wurde absolut mega-inkompatibel mit jeder anderen Version von Delphi.Net. Das ist bei keiner anderen .Net-Sprache so, die ich bisher probiert habe. |
Re: Delphi .Net Package Units "verstecken"
danke für deine schnelle Antwort Elvis,
aber ich muss dir nen bisl widersprechen. Zitat:
Delphi-Quellcode:
schmeisst man das borland.delphi raus, gehts bei mir auch ohne irgendwelche zusätzlichen dlls in VS.net
package Package1;
... requires borland.delphi; (auf dem system wo ich vs.net habe ist nichts von borland installiert) Aber hab die ganze zeit schon rumgebastelt. Wenn ich das ganze als Libary mache, wird auch alles exportiert. unterschied ist nur das Delphi selbst nicht mehr drankommt. Und das ohne irgendeine Exportanweisung. Wie deklariert man den sowas unter C#, oder wird da auch immer alles exportiert ? |
Re: Delphi .Net Package Units "verstecken"
Zitat:
Deshlab musst du die RTL von D.Net mitliefern oder akzeptieren, dass es in D.Net nicht geht. Zitat:
Das interessiert dich hier ja nicht, du willst einfach nur ein paar der Klassen in C# sehen, right?[quote]Wie deklariert man den sowas unter C#, oder wird da auch immer alles exportiert ?[/delphi]
Code:
Ohne Sichtbarkeits-modifizierer wird autom. "Internal" genommen, und das heißt, dass etwas nur innerhalb einer Assembly sichtbar ist.
class Someclass { }
In Chrome wäre das eine Deklaration wie sie in Delphi aussehen würde:
Delphi-Quellcode:
Eine Klasse, die öffentlich sichtbar wäre, sähe so aus:
SomeClass = class end;
C#
Code:
Chrome
public class Someclass { }
Delphi-Quellcode:
SomeClass = public class end;
|
Re: Delphi .Net Package Units "verstecken"
Delphi versucht zu erkennen, ob es eine mit Delphi geschriebene DLL ist und dabei macht Delphi allerhand murx. Es gibt mit .Net keine Packages, aber die Borländer, CodeGearer versuchen da etwas zu platzieren, was da nicht hingehört und das geht gehörig in die Hose. VS oder auch SharpDevelop geht bei einem Assembly davon aus, dass das eben auch nur ein Assembly ist. Delphi macht das leider nicht. So sehr es mich auch schmerzt, aber wenn Du was mit .Net machen willst, schau Dich nach einer anderen IDE um, die das .Net Framework auch so verwendet, wie es gedacht war (VS oder SharpDevelop zum Beispiel).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz