Entwickler-Ecke

Sonstiges (Delphi) - Kompatibilität


kuschelfreddy - Fr 01.05.09 12:38
Titel: Kompatibilität
Hey!
Ich habe mal eine Frage: Und zwar programmiere ich zu Hause mit Delphi 7, in der Schule haben wir aber nur Delphi 5. Deshalb weigert sich der PC in der Schule grundsätzlich, meine Programme zu öffnen, was ziemlich blöd ist, da ich mir so die Arbeit im Prinzip umsonst mache. Deshalb wüsste ich gern, ob es ähnlich wie bei Microsoft Word zB eine Möglichkeit gibt, die Delphi 7 Programme kompatibel zu machen, so dass Delphi 5 sie ohne Probleme öffnet.

Vielen Dank schon mal im Voraus!

LG Nathalie


Martok - Fr 01.05.09 12:58

Solange du nur Standardkomponenten verwendest, sollte es da eigentlich keine größeren Probleme geben.

Die VCL hat sich zwar mit D7 intern stark geändert, aber kompatibel sollte doch das meiste sein.

Was genau gibts denn für Fehler?


kuschelfreddy - Fr 01.05.09 14:01

Na ja, das größte Prbolem war, dass er es oftmals gar nicht erst abgespielt hat und dann irgendwie der gesamte Quelltext verschwunden war und er einfach nur meinte, geht nicht.
Wenn der doofe Computer dann doch mal einen Quelltext gefunden hat, dann meinte er nur, dieser sei fehlerhaft, hat mir diese Zeile als falsch markiert:

Delphi-Quelltext
1:
2:
3:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;
und erst dann wieder was gemacht, nachdem ich Variants daraus gelöscht habe, aber das Programm lief dann meistens ein zwei Mal und schon war auch wieder Ende. Es ist halt echt n bissl doof, wenn man alles fertig hat und dann gehts nicht =(!

LG Nathalie

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


dummzeuch - Fr 01.05.09 20:41

user profile iconkuschelfreddy hat folgendes geschrieben Zum zitierten Posting springen:
Na ja, das größte Prbolem war, dass er es oftmals gar nicht erst abgespielt hat und dann irgendwie der gesamte Quelltext verschwunden war und er einfach nur meinte, geht nicht.
...
hat mir diese Zeile als falsch markiert:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;

und erst dann wieder was gemacht, nachdem ich Variants daraus gelöscht habe,


Stimmt, die Variants Unit gab es in Delphi 5 noch nicht, das kann man umgehen, indem man fuer Delphi 5 einfach eine leere Unit Variants beipackt, aber ansonsten sollte das meiste funktionieren. Was genau meinst Du mit "gar nicht erst abspielt"?


Jakob_Ullmann - Fr 01.05.09 21:31

Zwischen D5 und D7 ist halt wie ein größerer "Schnitt". Delphi meckert beim compilieren - das merke ich, wenn ich D7 nach D5 konvertieren will, ich arbeite gelegentlich mit beiden Versionen.

Er zeigt dir ja an, bei welcher Unit er den Fehler findet. Und diese machst* einfach raus (ich glaub, das sind auch ein paar mehr als nur die Variants).

*also du löschst den Eintrag aus der Uses-Klausel.

Du kannst dir ja gerne selbst ein Programm schreiben, was die Dateien öffnet und anschließend in D5 öffnet.
Ist in der Schule .dpr mit Delphi verlinkt (sollte eigentlich)? Wenn ja, kannst du einfach dein Programm (also nicht das, was du öffnen möchtest, sondern das, womit du die .dpr öffnest) bei der DPR die uses Klausel "parsen". Du suchst alle Units außer Forms raus und öffnest diese hintereinander. Du führst eine Ersetzung mittels StringReplace in dem Bereich von uses bis ; durch:


Delphi-Quelltext
1:
', Variants' -> ''                    


Dasselbe mit den anderen fehlenden Units. Dann wird die veränderte Datei jeweils gespeichert. Anschließend wird die DPR geschlossen und mit ShellExecute() geöffnet. Dann sollte D5 das Projekt auch ohne zu meckern compilieren.


jaenicke - Fr 01.05.09 21:32

user profile iconkuschelfreddy hat folgendes geschrieben Zum zitierten Posting springen:
aber das Programm lief dann meistens ein zwei Mal und schon war auch wieder Ende
Was heißt das? Startet es nicht mehr, kommt eine Fehlermeldung, schreibst du vielleicht Daten in eine Datei, die einen Fehler bewirken könnten, ...?

Ganz allgemein laufen die Programme, die ich mit Delphi 2006 / Turbo Delphi z.B. schreibe, wunderbar unter Delphi 5, wenn die Unit Variants überall gelöscht oder per Dummy ersetzt ist. Zusätzlich können noch Meldungen zu fehlenden Eigenschaften kommen. OnMouseEnter / OnMouseLeave gab es in Delphi 5 noch nicht zum Beispiel. Da reicht es aber, einmal alle Formulare zu öffnen in Delphi.

Ohne Details zu den Fehlern kann man da kaum etwas dazu sagen. :nixweiss:


Jakob_Ullmann - Fr 01.05.09 22:24

1. Die Schule sollte mal ihr Delphi aktualisieren. Da sind selbst wir mit D7 noch moderner (und das ist schon schlimm genug)

2. OnMouseLeave / OnMouseEnter gab es doch aber auch in D7 noch nicht. Daran sollte das Problem nicht liegen.

Aber es stimmt natürlich, mehr Details wären nicht schlecht. Vielleicht auch der Code von einem Programm, damit wir das mal nachvollziehen können.