Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi win32 als .Net kompilieren ? (https://www.delphipraxis.net/46259-win32-als-net-kompilieren.html)

smart 21. Mai 2005 15:13


win32 als .Net kompilieren ?
 
Kann man eigentlich mit Delphi 2005, Programme die für win32 geschrieben wurden als .Net kompilieren ?

Dax 21. Mai 2005 15:16

Re: win32 als .Net kompilieren ?
 
Wenn du die Sourcen des Programmes hast, prinzipiell ja. Das heißt, sofern alle genutzten Komponenten auch in .NET-Sourcenform vorliegen, dann geht das. Einfach nach .NET portieren lassen ;)

Robert_G 21. Mai 2005 15:17

Re: win32 als .Net kompilieren ?
 
Nicht wirklich...
Du kannst versuchen sie mit der VCL.Net zu kompostieren. Das Ergebnis ist dann so eine Mischung aus .Net und Win32 Invokes, die wesentlich langsamer als reine .Net oder reine Win32 Programme läuft.
Mit 5.000 IfDefs könnte es aber auch ohne VCL.Net und ohne Übersicht gehen. :mrgreen:

smart 21. Mai 2005 15:55

Re: win32 als .Net kompilieren ?
 
Also ist es besser für .Net einen eigenen Code zu schreiben, oder?

Robert_G 21. Mai 2005 16:12

Re: win32 als .Net kompilieren ?
 
Zitat:

Zitat von smart
Also ist es besser für .Net einen eigenen Code zu schreiben, oder?

Es steckt einfach eine ganz andere "Philosophie" hinter .Net als hinter good old native. ;)
.Net ist eine VM mit einem JIT, das alleine macht Dinge möglich, die vorher nur sehr schwierig implementierbar gewesen wären.
Auf der anderen Seite kannst du Dinge wie untyped Pointer knicken. Es gibt einen IntPtr, aber IMHO taugt der nur zur Kompatibilität zu Handles. ;)

Dust Signs 21. Mai 2005 16:21

Re: win32 als .Net kompilieren ?
 
Zitat:

Zitat von Robert_G
Zitat:

Zitat von smart
Also ist es besser für .Net einen eigenen Code zu schreiben, oder?

Es steckt einfach eine ganz andere "Philosophie" hinter .Net als hinter good old native. ;)
.Net ist eine VM mit einem JIT, das alleine macht Dinge möglich, die vorher nur sehr schwierig implementierbar gewesen wären.
Auf der anderen Seite kannst du Dinge wie untyped Pointer knicken. Es gibt einen IntPtr, aber IMHO taugt der nur zur Kompatibilität zu Handles. ;)

Aber was ist Programmierung ohne Pointer? Wenn .NET sich mal bis zu den Schulen durchsetzt... was sagt dann der Lehrer? Ja, leider gibt's in .NET keine Zeiger mehr, also lassen wir sie aus... und die verketteten Liste, und das ganze andere Zeug auch... Das kann's doch nicht sein; ich will Pointer :cry:

Dust Signs

MathiasSimmack 21. Mai 2005 16:29

Re: win32 als .Net kompilieren ?
 
Ich habe sie bisher noch nicht groß vermisst. :stupid:

Phoenix 21. Mai 2005 17:22

Re: win32 als .Net kompilieren ?
 
Zitat:

Zitat von Dust Signs
Wenn .NET sich mal bis zu den Schulen durchsetzt... was sagt dann der Lehrer?

Der Freut sich wie noch was :stupid:
Ich denke, er wird sagen: "Jungs und Mädels: Das, was die damals mit Pointern alles verbogen haben, darum brauchen wir uns dem Himmel (bzw. Microsoft) sei Dank nicht mehr zu kümmen. Ich zeig Euch jetzt mal, was Typsicherheit bedeutet..."

jbg 21. Mai 2005 17:23

Re: win32 als .Net kompilieren ?
 
Zitat:

Zitat von Dust Signs
Aber was ist Programmierung ohne Pointer?

Man hat doch Referenzen. Die ersetzen die Pointer.

Zitat:

und die verketteten Liste
Die funktioniert immernoch:
Delphi-Quellcode:
TItem = class(TObject)
  Next: TItem;
  Data: Integer;
end;

var
  List: TItem = nil;

Johnny_W 21. Mai 2005 17:28

Re: win32 als .Net kompilieren ?
 
Hiho,

@Dust Signs, wenn du unbedingt Pointer benutzen möchtest.

Ein Beispiel um einen PChar benutzen zu können:

Die Compilerdirektive {$UNSAFECODE ON} an den Anfang der Unit setzen;

Delphi-Quellcode:
Tform1 = Class(TForm)
//....
  private
     procedure UnsichereProzedur;unsafe;
//....

procedure TForm1.UnsichereProzedur;unsafe;
var
  Px: PChar;
begin
  //....
end;
Also referieren kann der Lehrer schon noch darüber und brauch sich keine Sorgen um seinen Arbeitsplatz zu machen. :roll:

MfG :-D

Phoenix 21. Mai 2005 17:40

Re: win32 als .Net kompilieren ?
 
Das geht in Delphi.NET ggf. noch so. Aaaaber versuch sowas mal in C# :twisted:

Nee nee. Von sowas sollte man in .NET lieber die Finger weg lassen. Das Konzept mit den Pointern wurde nicht umsonst weggelassen. Da haben findige Köpfe ne Menge Gehirnschmalz reingesteckt und meines Erachtens hatten sie damit einfach richtig dolle recht :)

Chewie 21. Mai 2005 18:03

Re: win32 als .Net kompilieren ?
 
Das Problem sind ja nicht die Pointer oder Zeiger oder Referenzen an sich, die sind unverzichtbar. Auf was man aber in einem sehr großen Teil der Programme verzichten kann, ist die Zeigerarithmetik. Dadurch, dass man das weglässt, ist ein Konzept einer konsistenten virtuellen Maschine, die sicherstellen kann, dass Objekten auch genau das drin steht, was drin stehen soll, erst umzusetzen.

Ob nun dann hinter den Kulissen wirklich mit Speicheradressen oder meinetwegen Indizes irgendeiner Tabelle gearbeitet wird, kann mir als Programmierer völlig egal sein, wenn ich diese Werte gar nicht mittels einer Arithmetik manipulieren kann.
Und dass wir weiterhin verkettete Listen, Bäume und jedwede andere Datenstruktur erstellen können, sollte klar sein.

Robert_G 21. Mai 2005 18:33

Re: win32 als .Net kompilieren ?
 
Zitat:

Zitat von Dust Signs
Aber was ist Programmierung ohne Pointer? Wenn .NET sich mal bis zu den Schulen durchsetzt... was sagt dann der Lehrer? Ja, leider gibt's in .NET keine Zeiger mehr, also lassen wir sie aus...

Also mir war fast so als hätte ich untyped Pointer geschrieben... :gruebel:
Zitat:

Zitat von Dust Signs
...und die verketteten Liste, und das ganze andere Zeug auch... Das kann's doch nicht sein; ich will Pointer :cry:

Da konter ich doch glatt mit Generics! :firejump: (Und wehe dem, der hier Widerworte findet. :mrgreen: )
[msdn]Generics in C#[/msdn]
Generics in Chrome

Johnny_W 21. Mai 2005 18:39

Re: win32 als .Net kompilieren ?
 
Zitat:

Das geht in Delphi.NET ggf. noch so. Aaaaber versuch sowas mal in C#
Delphi-Quellcode:
unsafe class Unsicher
{
  // Irgendeine Methode hier kann nun Pointer benutzen
}

class Unsicher
{
  unsafe int * pPointMe;
}

class EntryPoint
  {
  static unsafe void Main()
  {
  }
}
Zusätzlich Compilerschalter setzen : Projekt/Optionen/Compiler Unsicheren Code zulassen.
oder mit dem C# Command Line Compiler. csc /help (/unsafe)

Anwendugsfälle gibt es schon:
Wenn man z.b ein kurzlebiges schnelles stackbasierendes Array benötigt, und auf eine Instanz von System.Array verzichten möchte.
Soll aber keine Werbung sein für unsicheren Code :hello: , nur zeigen das es unter C# auch noch geht.

MfG :-D


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