Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Module in Delphi.Net für C# schreiben (https://www.delphipraxis.net/87869-module-delphi-net-fuer-c-schreiben.html)

alzaimar 6. Mär 2007 15:50


Module in Delphi.Net für C# schreiben
 
Sagt mal.... (mal :mrgreen: )

Ich sitz hier grad mit einem Programmierer, der in C# eine Anwendung schreibt. Ich bin zu faul, mir jetzt mal eben C# anzueignen und so wollte ich eine Delphi-Klasse mal eben mit Delphi.NET durchkompilieren und ihm zur Verfügung stellen.

Die einzige Möglichkeit bisher ist einen dot.net DLL mit sagenhaften 1.5 MB :shock: bei ca. 200 Zeilen Code.

Gibt es kein dot.net pendant zu *.obj oder *.dcu Dateien? Schließlich befinden wir uns doch dank dot.net in *einer* Welt, oder?

Kann mir da mal jemand einen Tipp geben?

Interceptor 6. Mär 2007 15:55

Re: Module in Delphi.Net für C# schreiben
 
Kannst du nicht einfach ne delphi.NET klasse schreiben und dann von C# aus drauf zugreifen? Sollte doch eig. funktionieren...

mkinzler 6. Mär 2007 16:00

Re: Module in Delphi.Net für C# schreiben
 
VCL.Net oder Winforms?

Phoenix 6. Mär 2007 16:02

Re: Module in Delphi.Net für C# schreiben
 
Zitat:

Zitat von alzaimar
Gibt es kein dot.net pendant zu *.obj oder *.dcu Dateien? Schließlich befinden wir uns doch dank dot.net in *einer* Welt, oder?

Das Pendant SIND die Assemblys.

Warum eine 200-Zeilen Unit eine 1,5 MB Assembly erzeugt ist mir aber ehrlich gesagt auch schleierhaft. Mal ganz grob: Was machst Du in der Klasse? Werden dort ggf. andere Units angezogen die das so aufblähen?

Phoenix 6. Mär 2007 16:02

Re: Module in Delphi.Net für C# schreiben
 
Zitat:

Zitat von mkinzler
VCL.Net oder Winforms?

Bei VCL.NET würde ein Referenz auf Borland.VCL gesetzt werden und die entsprechende DLL müsste mitgeliefert werden. Die wird ja nicht einkompiliert...

alzaimar 6. Mär 2007 16:04

Re: Module in Delphi.Net für C# schreiben
 
Hiho,
@Interceptor: Genau das will ich ja. Klappt auch mit der DLL, nur wozu benötige ich 1.5MB?
@mkinzler: Weder noch, einfach nur eine simple Klasse (Berechnungen).
@Phoenix:
Delphi-Quellcode:
Uses SysUtils,
  System.Globalization,
  Borland.Vcl.Variants,
  Borland.Vcl.XmlDoc,
  Borland.Vcl.XmlIntf;

Interceptor 6. Mär 2007 16:09

Re: Module in Delphi.Net für C# schreiben
 
hm, seltsam dass das nicht funktioniert...

Alternativvorschlag: Irgendwo auf der Borland-Seite gibts doch nen Delphi.NET 2 C# Konverter. Im Worst-Case eben deine Klasse ins entsprechende C# Pedant konvertieren lassen

alzaimar 6. Mär 2007 16:21

Re: Module in Delphi.Net für C# schreiben
 
Interceptor: Es funktioniert tadellos, aber wozu 1.5MB, das ist die Frage. Den Konverter zieh ich mir mal rein.

Christian S. 6. Mär 2007 17:32

Re: Module in Delphi.Net für C# schreiben
 
Hallo!

Gab es nicht die Möglichkeit, Borland-DLLs in die eigene Assembly einzubinden? Ich glaube, wenn man sich die Eigenschaften der Borland-DLL in den Referenzen des Projektes ansieht, gibt es da die Option "Units verknüpfen" oder so. Ist das bei Dir, alzaimar, eingeschaltet? Das würde dann erklären, warum das so groß ist.

Grüße
Christian

alzaimar 6. Mär 2007 17:45

Re: Module in Delphi.Net für C# schreiben
 
Zitat:

Zitat von Christian S.
... gibt es da die Option "Units verknüpfen" oder so. Ist das bei Dir, alzaimar, eingeschaltet?..

Ich finde das nicht (ich komm mir echt vor, wie ein absoluter Noob. Bin ich ja auch :oops: )

DP-Maintenance 6. Mär 2007 18:19

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Hier gehts auch um Delphi

Elvis 6. Mär 2007 18:44

Re: Module in Delphi.Net für C# schreiben
 
Zitat:

Zitat von alzaimar
Code:
Uses SysUtils,
  System.Globalization,
  [u]Borland.Vcl.[/u]Variants,
  [u]Borland.Vcl.[/u]XmlDoc,
  [u]Borland.Vcl.[/u]XmlIntf;

Um es mal mit aller geheuchelter Zurückhaltung zu fragen...
Ich dachte du wolltest .Net Code schreiben? :mrgreen:

Spass beiseite: Was du dir da zusammengeschrieben hast ist Code, der wie Delphi32 aussieht, und all die Kompatibilitätsdingsens brauchen nunmal Platz.
Du musst also mindestens die Borland.Vcl extern referenzieren, oder du kompostierst es in dein Assembly hinein.[1]
Ersteres lässt dich ein Mordsgerät mitliefern, zweites macht dein Assembly zu einem Mordsgerät.

Probiere einfach bei den Funktionen zu bleiben, die .Net mitbringt. Und Delphi-Variants in .Net zu benutzen dürfte deinen C#-Kollegen eher zu unterdrückten Flüchen(Wenn du sein Chef bist :mrgreen:) oder ernsthaften Handgreiflichkeiten verleiten .
Vermeide in .Net einfach jegliche delphi-spezifische Delphi-dingsens, die meisten davon wird man von C# aus nicht ohne Reflection benutzen können, die anderen sehen einfach furchtbar aus.

System.Xml bringt schnieke XML-Klassen mit.
System.Object ist bereits das was ein Variant im alten Delphi war, schlicht und ergreifend weil alles davon ableitet, selbst die primitiven Typen.

[1]Kiek mal in die Referenzenliste deines Projektes und klicke mal auf die VCL.
Im Objectinspector solltest du jetzt die Eigenschaften dieser Referenz bearbeiten können.

alzaimar 6. Mär 2007 19:51

Re: Module in Delphi.Net für C# schreiben
 
Hi Elvis,

da wird mir nun einiges Klar, obwohl ich nicht verstehe, wieso z.B. Variants (wenn ich sie nur lokal verwende) so einen Overhead produzieren, oder gar zu Handgreiflichkeiten führen. Denn ich verwende sie nur innerhalb der alten Delphi-Unit.

Aber im Grunde genommen kann ich auf Variants komplett verzichten, denn ich verwende sie nur zur Abstraktion der XML-Nodevalues. Die sind aber ohnehin Strings, wobei deren Datentyp auch noch netterweise als Attribute ('xsi:type = 'xsd:double') mitgeliefert werden.

Weiterhin verwende ich noch diverse Stringroutinen, die vermutlich auch ein entsprechendes dot.net Pendant haben...

Nun gut, also werde ich doch mal nachsitzen und das VCL-Dingens (heißt das im englischen Original VCL-Thingies?) wegdingseln.

Danke an Alle für die Aufklärung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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