Entwickler-Ecke

Programmierwerkzeuge - Delphi 64 Bit unter Windows 7 64 bit ?


Hochhaus - Sa 24.04.10 15:56
Titel: Delphi 64 Bit unter Windows 7 64 bit ?
Ich bin neu hier. Zu Beginn eine "dumme" Frage: Gibt es ein 64 bit-Delphi für Windows 7 64 bit ? Oder erst Beta-Versionen ?

Besten Dank im Voraus für die Antworten. Wo kriegt man es, falls es existiert ?


Moderiert von user profile iconKha: Topic aus Sonstiges (Delphi) verschoben am Sa 24.04.2010 um 16:57
Moderiert von user profile iconGausi: Topic aus Programmierwerkzeuge (Library) verschoben am So 25.04.2010 um 12:13
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


Gausi - So 25.04.10 11:19

Delphi für 64 Bit gibt es noch nicht. Wann es das gibt, ist unklar (it's done, when it's done).

Du kannst mit den 32-Bit-Versionen auch unter Win64 programmieren, das Compilat ist dann ebenfalls 32bit. Alternativ kannst du Lazarus verwenden, ein OpenSource-Projekt, das einigermaßen kompatibel zu Delphi ist und neben 64Bit auch Linux und Mac unterstützt.


Hochhaus - Do 30.12.10 08:32

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Delphi für 64 Bit gibt es noch nicht. Wann es das gibt, ist unklar (it's done, when it's done).

Du kannst mit den 32-Bit-Versionen auch unter Win64 programmieren, das Compilat ist dann ebenfalls 32bit. Alternativ kannst du Lazarus verwenden, ein OpenSource-Projekt, das einigermaßen kompatibel zu Delphi ist und neben 64Bit auch Linux und Mac unterstützt.


Inzwischen sind 8 Monate vergangen /Gibt es jetzt ein Delphi 64 Bit ? Danke im Voraus für die Antworten .


jaenicke - Do 30.12.10 09:33

Ein Delphi, das selbst 64-bittig ist, wird es so schnell nicht geben. Eine Version, die 64-Bit Exen erstellen kann, ist für 2011 angekündigt (Delphi XE2).

Ich benutze Delphi 2006 bis Delphi XE ganz normal unter Windows 7 64-Bit, die erstellten Exen ebenfalls, die sind eben nur keine echten 64-Bit Exen. Warum ist dir das so wichtig, gibt es da ein spezielles Problem?


Hochhaus - Do 30.12.10 10:17

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ein Delphi, das selbst 64-bittig ist, wird es so schnell nicht geben. Eine Version, die 64-Bit Exen erstellen kann, ist für 2011 angekündigt (Delphi XE2).

Ich benutze Delphi 2006 bis Delphi XE ganz normal unter Windows 7 64-Bit, die erstellten Exen ebenfalls, die sind eben nur keine echten 64-Bit Exen. Warum ist dir das so wichtig, gibt es da ein spezielles Problem?


Delphi 64 Bit kann vermutlich mehr Hauptspeicher adressieren. Oder nicht ? Das ist der Grund, weshalb ich danach frage.


jaenicke - Do 30.12.10 10:28

Das stimmt, aber da musst du dann wirklich auf Delphi XE2 warten oder Lazarus oder eine andere Sprache verwenden. (Da ist eigentlich nur die Frage, ob du derart viel Speicher wirklich brauchst.)


SvenAbeln - Do 30.12.10 10:45

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:

Delphi 64 Bit kann vermutlich mehr Hauptspeicher adressieren. Oder nicht ? Das ist der Grund, weshalb ich danach frage.


Unter 64bit Windows kann man mit FastMM auch jetzt schon 4GB adressieren, mehr geht dann wirklich erst mit einem 64bit Delphi.


jaenicke - Do 30.12.10 10:53

user profile iconSvenAbeln hat folgendes geschrieben Zum zitierten Posting springen:
Unter 64bit Windows kann man mit FastMM auch jetzt schon 4GB adressieren
Der FastMM Speichermanager ist doch ohnehin in Delphi integriert. Das sollte dann also auch direkt gehen.
(Außer in den ganz alten Versionen bis Delphi 7/2005.)


Lemmy - Do 30.12.10 11:23

Hi,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ein Delphi, das selbst 64-bittig ist, wird es so schnell nicht geben.


wie kommst Du darauf bzw. Was ist der Grund dafür? Die IDE ist in Delphi programmiert, der Compiler wenn mich nicht alles täuscht doch aus. Was spräche dann dagegen zumindest die IDE umzustellen?

Grüße


SvenAbeln - Do 30.12.10 11:49

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Der FastMM Speichermanager ist doch ohnehin in Delphi integriert. Das sollte dann also auch direkt gehen.
(Außer in den ganz alten Versionen bis Delphi 7/2005.)

Mit dem integrierten Speichermanager habe ich es noch nicht getestet, in dem entsprechenden Projekt verwenden wir den normalen FastMM.
FastMM4.pas hat folgendes geschrieben:
Supports up to 3GB of user mode address space under Windows 32-bit and 4GB under Windows 64-bit. Add the "$SetPEFlags $20" option (in curly braces) to your .dpr to enable this.


platzwart - Do 30.12.10 12:29

Was mich da interessieren würde: Wozu muss man bei einer Delphi-App mehr als 4GB adressieren?


Bernhard Geyer - Do 30.12.10 12:40

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Was mich da interessieren würde: Wozu muss man bei einer Delphi-App mehr als 4GB adressieren?

Wenn du ein Plugin für ein 64-Bit Programm entwickeln wirst (Office 2010, Alle CAD-Programme) geht das nur mit einem 64-Bit Compiler. Auch tritt das Problem mit Speicherfragmentierung (Windows läd x-DLLs in deinem Adressraum nicht mehr auf. Dieser kann dazu führen das du keinen zusammenhängenden Speicher > 500 MB anfordern kannst.


Delete - Do 30.12.10 12:52

Aber mal ehrlich in wie vielen von hundert Fällen hat man das Problem? Ich hatte zum Beispiel noch nie das Problem, dass ich zu wenig Speicher gehabt hätte. Speicherprobleme bekommt man eigentlich nur dann, wenn man nicht auf seinen Speicher achtet und vergisst Speicher wieder freizugeben.


Gausi - Do 30.12.10 13:26

Ich hatte die Tage zufällig mit jemanden kurz darüber gesprochen. Derjenige ist Mathematiker im Versicherungsbereich. Für Risiko-Abschätzungen u.ä. werden da sehr umfangreiche Simulationen laufen gelassen. Wenn ich richtig verstanden habe, ist die in Delphi geschriebene Software dafür hauptsächlich damit beschäftigt, Daten auf Platte auszulagern und wieder davon zu lesen - die 4GB reichen halt nicht wirklich aus für die Datenmengen, die da benutzt werden.

Ist zwar ein recht spezieller Anwendungsfall, aber das kommt durchaus vor.


Delete - Do 30.12.10 13:32

Da stellt sich aber die Frage, ob Delphi die richtige Sprache für so was ist.


jaenicke - Do 30.12.10 14:07

user profile iconLemmy hat folgendes geschrieben Zum zitierten Posting springen:
wie kommst Du darauf bzw. Was ist der Grund dafür? Die IDE ist in Delphi programmiert, der Compiler wenn mich nicht alles täuscht doch aus.
Richtig, aber soweit ich das verstanden habe bleibt die IDE 32-Bit Windows. 64-Bit, Mac und später dann auch Linux Programme kommen nur aus dem entsprechenden Backend des Compilers heraus.

Der Grund ist vermutlich ganz einfach, das es keinen Grund gibt, das zu ändern. :nixweiss:


Delete - Do 30.12.10 14:22

Hinzukommt, dass die Portierung nicht ganz trivial ist.


Lemmy - Do 30.12.10 14:44

Hi,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Der Grund ist vermutlich ganz einfach, das es keinen Grund gibt, das zu ändern. :nixweiss:


Zumindest der Aufwand für Vertrieb und Support wäre bei 2 unterschiedlichen Versionen höher.


user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Hinzukommt, dass die Portierung nicht ganz trivial ist.


Portierung von was? IDE oder Compiler? Und vor allem: Welcher Aufwand ist denn zu erwarten? Auch in Bezug auf eigene Anwendungen? Um es "einfacher" zu machen: Bleiben wir bei Win32/Win64 ohne Linux und ohne Mac. Kann ich davon ausgehen, dass ich über eine Projektoption einstellen kann welche Exe beim kompilieren erstellt werden soll oder davon, dass es eine VCL32 und eine VCL64 geben wird...??

Grüße


jaenicke - Do 30.12.10 15:19

user profile iconLemmy hat folgendes geschrieben Zum zitierten Posting springen:
Welcher Aufwand ist denn zu erwarten? Auch in Bezug auf eigene Anwendungen?
Man muss schon einiges umstellen, z.B. aufgrund der 64-Bit Datentypen. es sollte sich aber im Rahmen halten, wenn man nicht Meta-Typen wie Real oder so benutzt hat. Ein wenig dazu kannst du auch bei Twitter von den Entwicklern lesen.

user profile iconLemmy hat folgendes geschrieben Zum zitierten Posting springen:
Um es "einfacher" zu machen: Bleiben wir bei Win32/Win64 ohne Linux und ohne Mac. Kann ich davon ausgehen, dass ich über eine Projektoption einstellen kann welche Exe beim kompilieren erstellt werden soll
Ja, du schaltest damit das Backend des Compilers um, das den entsprechenden Code erstellt. Dafür wurde der Compiler neu mit Front- und Backend geschrieben. Wenn du in den Quelltext der D2010+ Units schaust, siehst du auch überall ifdefs für Linux, Mac, ...


Lemmy - Do 30.12.10 16:43

Hi,
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconLemmy hat folgendes geschrieben Zum zitierten Posting springen:
Welcher Aufwand ist denn zu erwarten? Auch in Bezug auf eigene Anwendungen?
Man muss schon einiges umstellen, z.B. aufgrund der 64-Bit Datentypen. es sollte sich aber im Rahmen halten, wenn man nicht Meta-Typen wie Real oder so benutzt hat. Ein wenig dazu kannst du auch bei Twitter von den Entwicklern lesen.


Ok, das hätte ich vielleicht sagen sollen - das mit den Integer bzw. Datentypen allgemein ist so weit klar, auch die Problematik bzgl. Dateien und unterschiedlicher Länge. Datenbanken udn vergleichbares lassen sich hier ggf. ebenso einfach auf die korrespondierenden umstellen bzw. hier gibts jettz schon die Möglichkeit die fundamentalen Typen zu verwenden, die sich nicht ändern.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ja, du schaltest damit das Backend des Compilers um, das den entsprechenden Code erstellt. Dafür wurde der Compiler neu mit Front- und Backend geschrieben. Wenn du in den Quelltext der D2010+ Units schaust, siehst du auch überall ifdefs für Linux, Mac, ...


ah.. muss ich gleich mal schauen.... Danke für den Tipp...


Delphi-Laie - Do 30.12.10 17:16

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ein Delphi, das selbst 64-bittig ist, wird es so schnell nicht geben. Eine Version, die 64-Bit Exen erstellen kann, ist für 2011 angekündigt (Delphi XE2).

Ich benutze Delphi 2006 bis Delphi XE ganz normal unter Windows 7 64-Bit, die erstellten Exen ebenfalls, die sind eben nur keine echten 64-Bit Exen. Warum ist dir das so wichtig, gibt es da ein spezielles Problem?


Das Problem sehe ich weniger in Delphi, sondern in den Compilaten. 32-Bit-Programme sind unter 64 Bit im Prinzip ebenso schmalspurig und - oft genug leider auch - funktionseingeschränkt, wie es die 16-Bit-Programme unter Windows 32 waren und sind.


platzwart - Do 30.12.10 17:50

Das Problem ist mir in der Praxis allerdings so gut wie garnicht vorgekommen...


Delphi-Laie - Do 30.12.10 17:58

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem ist mir in der Praxis allerdings so gut wie garnicht vorgekommen...



Dann benutze mal einen globalen Hook oder eine so relativ systemnahe Funktion wie "CreateToolHelpSnapShot" oder versuche das Lesen/Setzen der Prioritäten oder Beenden beliebiger Prozesse/Threads - und schon sind 32-Bit-Compilate mit ihrem Latein weitgehend am Ende.


platzwart - Do 30.12.10 18:35

Aber auch nur weitgehend und all das wird nur in 0,01% aller Programme benötigt werden...


Gausi - Do 30.12.10 18:40

Zu den 0.01% gehören dann z.B. Player, die einen Hook auf die Multimediatasten installieren wollen. Oder solche, die ein Deskband in die Taskleiste integrieren wollen. Das kann man mit Delphi aktuell vergessen.

Nur um mal zwei Beispiele aus der Praxis zu nennen. ;-)


Chemiker - Do 30.12.10 18:56

Hallo,

das ist die gleiche Diskussion wie bei der BS Umstellung von 16 auf 32 Bit. Arbeitet heute von euch noch ernsthaft einer mit einem 16Bit BS?
Wenn man DLLs für MS-Office schreiben will, kann man zur Zeit Delphi auch vergessen, weil einige schon die 64Bit Versionen einsetzen.

Bis bald Chemiker


Delphi-Laie - Do 30.12.10 20:09

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Aber auch nur weitgehend und all das wird nur in 0,01% aller Programme benötigt werden...


Also, ich schrieb in meinem Leben noch nicht allzuviele größere Delphi-Programme (etwa "eine Hand voll"), aber schon bei zweien davon war unter Windows 64 Bit mit Delphi irgendwann "das Ende der Fahnenstange erreicht", so daß ich teilweise oder ganz auf Lazarus umschwenkte (mit dem ich mich heute noch umherärgere, eine wahre Freude ist das im Vergleich zu Delphi nicht).

Was habe ich Laie (!!) dann wohl für ein Talent (auch Glück?), 0,01% aller Programme zu tangieren (bei mir ist diese Quote eher bei 40 %, und, da es meine beiden größten Programme sind, vom Programmieraufwand noch mehr)?

Konsequenterweise äußerten mithin auch meine Vorredner Bedenken, wie schnell man mit den 32 Bit heutzutage am Ende sein kann.


platzwart - Do 30.12.10 20:50

Wenn alle nur noch 60% ihrer Programme mit Delphi umsetzen können, dann gibt es wohl niemanden mehr, der Delphi kauft und das Forum hier kann dann ja ruhig dicht gemacht werden...


jaenicke - Do 30.12.10 21:49

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Was habe ich Laie (!!) dann wohl für ein Talent (auch Glück?), 0,01% aller Programme zu tangieren
Ein großes Talent. Weder beruflich noch privat hatte ich da bisher oft dieses Problem. Für ein einziges kleines Projekt brauchte ich Lazarus (ein 64-Bit Dienst, und genau dort hat Lazarus einen Fehler, dass nicht einmal das Beispiel direkt funktionierte...). Alles andere hätte sich mit Delphi leicht machen lassen, bezogen auf Desktopanwendungen für Windows.
Dass ich auch immer wieder mal C# oder noch was anderes benutzt habe, liegt eher daran, dass ich damit auch was machen wollte.


Hochhaus - Fr 10.06.11 08:35

Inzwischen sind wieder 5 - 6 Monate vergangen. Gibt es jetzt ein 64-Bit Delphi ? Wo kriegt man es ?

Herzliche Grüsse


Hochhaus


Gausi - Fr 10.06.11 08:48

Nein, noch nicht.


jaenicke - Fr 10.06.11 09:11

Es kommt aber auf jeden Fall dieses Jahr, ob genauere Daten schon veröffentlicht wurden, weiß ich nicht. ;-)


spawn89 - Fr 10.06.11 10:09

Beta läuft ja, und ich hab schon öfters Oktober gelesen.


Hochhaus - Sa 08.10.11 18:53

user profile iconspawn89 hat folgendes geschrieben Zum zitierten Posting springen:
Beta läuft ja, und ich hab schon öfters Oktober gelesen.


Jetzt ist es Oktober. Ist es jetzt da ?


Regan - Sa 08.10.11 18:57

Ja, ist es. [http://edn.embarcadero.com/article/41593]


Delete - Sa 08.10.11 21:11

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt ist es Oktober. Ist es jetzt da ?

Man hätte auch einfach mal googlen können.


Hochhaus - Mo 10.10.11 06:38

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Ja, ist es. [http://edn.embarcadero.com/article/41593]


Danke für die Hilfe ! Ich habe es gefunden, heruntergeladen und installiert. (Die 30 Tage Trial-Version)

Nur finde ich nicht, wo man beim Compilieren zwischen der 32- und 64-Bit EXE umschalten kann !

Herzliche Grüsse,


Hochhaus


Regan - Mo 10.10.11 08:39

Dafür musst du im Projekt Manager (Widget rechts oben) bei Target Platforms einen Rechtklick machen und eine neue Zielplattform hinzufügen.


Hochhaus - Mo 10.10.11 09:06

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Dafür musst du im Projekt Manager (Widget rechts oben) bei Target Platforms einen Rechtklick machen und eine neue Zielplattform hinzufügen.


Danke ! Das hat funktioniert. Nur kommen jetzt beim Compilieren meiner 32-Bit-Anwendung Dutzende von Fehlermeldungen, die vorher nicht da waren ... ...


jaenicke - Mo 10.10.11 09:33

Was sind das denn für Meldungen?

Wenn es um die Units geht, müssen da die entsprechenden Prefixe davor, wenn noch welche fehlen.


Hochhaus - Mo 10.10.11 09:43

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Was sind das denn für Meldungen?

Wenn es um die Units geht, müssen da die entsprechenden Prefixe davor, wenn noch welche fehlen.


Undeklarierter Bezeichner "CrHourGlass" in Zeile 154
Undeklarierter Bezeichner „mrYes“ in Zeile 328

etc. etc.


jaenicke - Mo 10.10.11 09:56

Das sollte die Unit Controls sein, also jetzt vermutlich (kann grad nicht schauen) VCL.Controls, liegt die in den uses?


Hochhaus - Mo 10.10.11 10:08

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das sollte die Unit Controls sein, also jetzt vermutlich (kann grad nicht schauen) VCL.Controls, liegt die in den uses?


Nein.

Gruss, Hochhaus


Hochhaus - Mo 10.10.11 10:17

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das sollte die Unit Controls sein, also jetzt vermutlich (kann grad nicht schauen) VCL.Controls, liegt die in den uses?


Ich habe die VCL.Controls eingebunden. Jetzt funktioniert es weitgehend. Aber jetzt kommen neue weitere Fehlermeldungen

[DCC Fehler] CHILD.PAS(350): E1012 Konstantenausdruck verletzt untere Grenzen ...

in : --> Zeile := RichEdit1.Perform(EM_LineFromChar, -1, 0) + 1; {Dies lässt sich unter Delphi 6 PE problemlos compilieren}

Danke im Voraus für die Hilfe !

Hochhaus


P.S. Wie ich inzwischen gemerkt habe, gibt es einen grösseren Arbeitsaufwand, um ein bisheriges 32-Bit-Programm auf 64 Bit umzustellen. Der Texteditor läuft nun "fast" unter 64 Bit. Wenn ich ein neues Kindfenster öffne, kommen chinesische Zeichen auf den Bildschirm. Eine bestehende Datei wird mit grauenhaft verzerrtem Schriftfont dargestellt usw. usw.

Bin ich der Einzige mit solchen Problemen ?


Hochhaus - Mo 10.10.11 18:29

Hiermit poste ich das Beispielprojekt "TextEditor". Dann können Andere nachvollziehen, was es alles an Problemen gibt. (64 Bit-Version)


Chemiker - Mo 10.10.11 19:43

Hallo Hochhaus,

wenn der Code unter Delphi 6 gelaufen ist dann wirst Du ein Problem mit UNI-Code haben das seit Delphi 2009 implementiert worden ist. Das bedeutet z.B. das String unter Delphi 6 jetzt AnsiString unter Delphi XE2 ist.

Bis bald Chemiker


jaenicke - Mo 10.10.11 20:42

Da sind auch ein paar richtig schöne Fehler drin. Zum Beispiel hier in FindX gehst du davon aus, dass ein Zeichen ein Byte groß ist statt es mit SizeOf(Char) zu verrechnen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  GetMem(Ft, Length(FindText) + 1);
  StrPCopy(Ft, FindText);
  PGroesse := RichEdit1.GetTextLen + 1;
  GetMem(Puffer, PGroesse);
  RichEdit1.GetTextBuf(Puffer, PGroesse);
  ...


Hochhaus - Di 11.10.11 07:17

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Vielen Dank ! Hochhaus