AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Prism Delphi .Net Package Units "verstecken"
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi .Net Package Units "verstecken"

Offene Frage von "4dk2"
Ein Thema von 4dk2 · begonnen am 4. Sep 2007 · letzter Beitrag vom 4. Sep 2007
Antwort Antwort
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#1

Delphi .Net Package Units "verstecken"

  Alt 4. Sep 2007, 11:10
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:
[Pascal Fatal Error] F2458 Cannot import metadata from Delphi 'library'. Use packages instead
Nach nem bisl rescher schieren hab ich dann rausgefunden das man nen in Delphi erstellte "LIBRARY" zwar in VS.net einbinden kann aber bei Delphi nicht.
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 {$DENYPACKAGEUNIT ON} , aber der Compiler schmeisst dann beim erstellen folgenden Fehler raus.

[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
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Delphi .Net Package Units "verstecken"

  Alt 4. Sep 2007, 11:33
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 Chrome nehmen, oder dich zu den Masochisten gesellen, die sich sogar extra Tools schreiben um Delphi-typen von hinten, durch die Brust ins Auge, zu verstecken.
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.
Robert Giesecke
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#3

Re: Delphi .Net Package Units "verstecken"

  Alt 4. Sep 2007, 14:35
danke für deine schnelle Antwort Elvis,
aber ich muss dir nen bisl widersprechen.

Zitat:
Oder du nimmst Delphi und deine Assemblies werden dich zwingen, extra die Borland.Delphi.dll mitzugeben.
ich weiss nicht welches Delphi du hast, aber bei mir (BDS 2006) steht bei nem neuen package
Delphi-Quellcode:
package Package1;
...
requires
  borland.delphi;
schmeisst man das borland.delphi raus, gehts bei mir auch ohne irgendwelche zusätzlichen dlls in VS.net
(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 ?
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Delphi .Net Package Units "verstecken"

  Alt 4. Sep 2007, 15:44
Zitat von 4dk2:
danke für deine schnelle Antwort Elvis,
aber ich muss dir nen bisl widersprechen.
...
schmeisst man das borland.delphi raus, gehts bei mir auch ohne irgendwelche zusätzlichen dlls in VS.net
Jupp, und du kannst sie nicht mehr in Delphi benutzen.
Deshlab musst du die RTL von D.Net mitliefern oder akzeptieren, dass es in D.Net nicht geht.

Zitat:
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.
Eine Library ist gedacht als eine DLL mit unmanaged Exports, also Funktionen, die native Anwendungen importieren können.
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:
class Someclass { }
Ohne Sichtbarkeits-modifizierer wird autom. "Internal" genommen, und das heißt, dass etwas nur innerhalb einer Assembly sichtbar ist.
In Chrome wäre das eine Deklaration wie sie in Delphi aussehen würde:SomeClass = class end; Eine Klasse, die öffentlich sichtbar wäre, sähe so aus:
C#
Code:
public class Someclass { }
ChromeSomeClass = public class end;
Robert Giesecke
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Delphi .Net Package Units "verstecken"

  Alt 4. Sep 2007, 15:47
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).
  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 03:40 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