Hallo zusammen, ich möchte den Quellcode eines in Delphi 3 geschriebenen Programms gerne kompilieren (und später auf eine neuere Version updaten). Der Quellcode liegt mir vollumfänglich vor. Ebenso Delphi 3. Wenn ich nun den Quellcode versuche zu kompilieren, fehlen dem Compiler leider verschiedene Abhängigkeitsdateien. Zum einen fehlt die Komponente TBiGauge, zum anderen die Dateien "Dos.dcu" und "Dos.pas". Zu letzteren finde ich recht viele Foreneinträge im Internet, wo es aber immer heißt, dass es sich um (Turbo) Pascal Abhängigkeitsdateien handeln würde. Allerdings ist das Programm ganz sicher in Delphi geschrieben. Eingebunden werden soll die Dos.dcu in der Datei "BaseSupp.pas": {$IFDEF Windows} WinProcs {!!.41} {$IFNDEF VER80} {!!.51} , WinDos {!!.51} {$ENDIF}; {!!.51} {$ELSE} {$IFDEF DPMI} WinAPI, {!!.41} {$ENDIF} Dos; {$ENDIF} Ich frage mich, ob es daran liegen könnte, dass "Windows" nicht definiert ist. Eigentlich sollte er "Dos" ja gar nicht einbinden. Dass das evtl. das Problem sein und ich sollte irgendwo (wo?) Windows definieren. Ich bin leider mehr in C++ und C# als in Delphi unterwegs. Leider muss ich mich jetzt mit Delphi beschäftigen, weil das Programm unter Win 64 bit nicht mehr läuft und deshalb erneuert werden muss. Vielen Dank für Eure Unterstützung. Michael
Stell diese Frage doch besser im Embarcadero forum : embarcadero. public.delphi. ...
Michael schrieb: > Leider muss > ich mich jetzt mit Delphi beschäftigen, weil das Programm unter Win 64 > bit nicht mehr läuft und deshalb erneuert werden muss. warum denkst du, dass dir ein simples neuübersetzen mit einem 15 Jahre alten Compiler dir da hilft?
Vlad Tepesch schrieb: > warum denkst du, dass dir ein simples neuübersetzen mit einem 15 Jahre > alten Compiler dir da hilft? schon mal alles gelesen? > ich möchte den Quellcode eines in Delphi 3 geschriebenen Programms gerne > kompilieren (und später auf eine neuere Version updaten).
Ja - in einem Forum zu Delphi werde ich auch fragen. Bisher habe ich hier eben sehr kompetente Personen gefunden und deshalb auch hier nachgefragt. Nur neu kompilieren hilft hier natürlich nicht. Ich würde es aber gerne zunächst in der Entwicklungsumgebung kompilieren, in der es auch programmiert wurde. Wenn das klappt und ich alle Abhängigkeiten dafür zur Verfügung stehen habe, kann ich mir überlegen, wie ich es in eine Version von Delphi bekomme und dort kompiliert und vorher ggf. angepasst bekomme. Das Programm stammt nicht von mir, sondern wurde von einem Programmierer vor ca. 15 Jahren geschrieben. Da es in der Vergangenheit auch immer zufriedenstellend lief, wurde hieran nichts geändert. Jetzt hakt es aber an der Maßgabe, dass Verzeichnisse nur aus acht Buchstaben bestehen dürfen und eben unter Win x64 keine Funktion mehr möglich ist. Der Programmierer steht nicht mehr zur Verfügung, so dass ich jetzt selbst den Quellcode ausgepackt habe und mich daran versuche.
> Ich frage mich, ob es daran liegen könnte, dass "Windows" nicht > definiert ist. Eigentlich sollte er "Dos" ja gar nicht einbinden. Versuchs mal mit: {$DEFINE Windows}
Ok - das habe ich jetzt mal eingefügt. Dann verlangt er nach einer "WinDos.dcu", die ich im Internet finden konnte (ebenso wie eine hiervon benötigte String.dcu). Hierbei handelt es sich allerings wohl um Dateien für 16 bit Delphi (Titel der Seite: teravue-16bits-delphi). Beim Versuch zu kompilieren kommt nun folgende Fehlermeldung: Operandengröße stimmt nicht überein function StrLen(Str: PChar): Word; assembler; asm CLD LES DI,Str MOV CX,0FFFFH XOR AL,AL REPNE SCASB MOV AX,0FFFEH SUB AX,CX end; In der Zeile "LES DI, Str" tritt der Fehler auf. Ich bin langsam am Zweifeln, ob das Programm wirklich mit Delphi 3 geschrieben wurde, oder ob die Probleme nicht daher kommen, dass es ein Delphi 2 oder sogar Delphi 1 Programm ist. Das würde auch den obigen Fehler erklären und ggf. auch, weshalb die ganzen Abhängigkeiten fehlen. Delphi 1 war wohl auch 16 bit. Hat jemand eine Idee, wie ich an die 1. oder 2. Version von Delphi komme (auf der Delphi 3 CD ist sie aus irgendeinem Grund nicht drauf. Wenn ich bei der Installationsroutine Delphi 1 anklicke, kommt "Datei nicht gefunden"). Kann ich irgendwie rausfinden, in welcher Version der Quellcode geschrieben ist?
Bei mir (Delphi7) gibt es eine .dof Datei mit folgendem Eintrag: [FileVersion] Version=7.0 Schau doch mal in die "verdächtigen" Dateien.
Eine *.dof Datei gibt es leider nicht. In den verdächtigen Dateien (alle Dateien mit dem Projektnamen) finde ich leider nichts äquivalentes. Ich habe evtl. grade in einem alten Schrank Delphi 1 aufgetrieben. Mal schauen, was da passiert.
klingt irgendwie eher nach "Borland Pascal" (das war zwischen turbo pascal und delphi 1) man konnte aber bereits windows programme schreiben fehlende .dfm files würden darauf hindeuten.. aber: was willst du eigentlich bezwecken? wenn du offensichtlich von pascal/delphi keine ahnung hast? ohne (zumindest) etwas grundwissen wird das "neukompilieren als 32 software" eher schwierig ... ich würde generell eher lazarus/free pascal nehmen.. delphi 2 programm ist es übrigns nicht (das wäre schon 32 bit, und du hättest dein problem garnicht) In der Zeile "LES DI, Str" tritt der Fehler auf. ja, weil DI ein 16 bit register ist dein PChar aber 32 bit .
Robert L. schrieb: > fehlende .dfm files würden darauf hindeuten.. *.dfm Dateien gibt es für jedes Formular. Heißt - es ist wohl doch Delphi? Robert L. schrieb: > ohne (zumindest) etwas grundwissen wird das "neukompilieren als 32 > software" eher schwierig ... Ich arbeite seit Jahren mit C/C++, C# und VB. Ich denke schon, dass Grundwissen vorhanden ist - Delphi habe ich mal ein Jahr etwas gemacht, ist aber schon länger her. Ich gehe davon aus, dass ich mich hier ausreichend einarbeiten kann. Robert L. schrieb: > ja, weil DI ein 16 bit register ist > dein PChar aber 32 bit So habe ich mir das gedacht. Vielen Dank und gute Nacht.
ok, dann ist es delphi 1 (das einzige 16 bit delphi) probier mal lazarus das hat einen delphi->lazarus "converter" wenn du doch bei delphi bleibst: kopier nicht einfach irgendwelche .dcu files aus dem internet .. die müssen zur jeweiligen delphi version passen (man kann nicht z.b. xy.dcu von delphi 2 in delphi 3 verwenden) StrLen() ist übrigens in der unit "sysUtils.pas" dort musst du einfach die aktuelle (die mit deinem delphi ausgelieferte) verwenden sollte dein sourcecode aus unerfindlichen gründen, diese unit enthalten, einfach löschen!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.