Autor Beitrag
DaBoss
Hält's aus hier
Beiträge: 3


D6 Prof
BeitragVerfasst: Mo 22.09.03 10:29 
Hi,

ich bin gebeten worden folgendes Problem zu analysieren:

Wenn man unter Delphi ein Projekt startet wird der Quellcode kompiliert und die .exe startet. Jetzt beendet man das Programm, benennt die .exe in .v1 oder so um. jetzt läßt man das Projekt nochmal kompilieren. Die neu enstandene Datei ist aber Binär nicht mehr Kompatibel mit der .v1. Der Vergleich im Hexeditor zeigt, adss die beiden Dateien (die den selben Quellcode haben) Binär unterschiedlich sind. In 6 anläufen mit identischem Quellcode kamen 6 unterschiedliche Dateien heraus. Die Funktionsweise ist die selbe wie vorher. Ihr fragt euch jetzt wahrscheinlich Na und, was soll's? Ganz einfach: Die Dateien halten einer Binären Versionsprüfung (Binävergleich zu einer etwas älteren, evtl. gleichen Version) nicht stand!

Ich danke schon mal allen, die sich die mühe machen das zu lesen, und vielleicht bereit sind zu helfen.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 22.09.03 10:54 
Hi!

Nun, ich weiss zwar nicht genau, wieso die Dateien nicht exakt gleich aussehen, kann mir aber gut vorstellen, daß da wohl noch irgendetwas Spezifisches wie Datum der Compilierung reinkommt.

Aber um eine Versionsprüfung vorzunehmen, sollte man vielleicht dann auch tatsächlich einfach die Versionsflags nehmen, die du dem Programm unter den Compileroptionen angeben kannst, anstatt binär zu prüfen.

Cu,
Udontknow
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mo 22.09.03 11:33 
Es ist sogar ganz sicher, daß das compiledatum mit einfließt.
Ich habe hier in einer zeitschrift, ich glaube es war der entwickler, von einem Tool gelesen, wie man in einer Exe das Compilierdatum auslesen kann...

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.09.03 11:42 
Hi,

habst Du schon mal unter Projekt->Optionen das Versions-Tracking abgeschaltet und es dann versucht?

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 22.09.03 12:26 
Wir sprechen von "Versionsinfo in das Projekt übernehmen"?

Das bringt nix, ist trotzdem unterschiedlich.

Cu,
Udontknow
DaBoss Threadstarter
Hält's aus hier
Beiträge: 3


D6 Prof
BeitragVerfasst: Mo 22.09.03 17:53 
:D Hi, erst mal danke für die prompten Antworten.

Ich werde mal eure tipps berücksichtigen, mal sehen was kommt. Wenn das auch nicht klappt schreib ich wieder :wink:
DaBoss Threadstarter
Hält's aus hier
Beiträge: 3


D6 Prof
BeitragVerfasst: Mi 24.09.03 09:36 
:D Hallo,

das Problem stellte sich anders dar:

Wenn man ein Projekt mit mehreren Units hat, würfelt Delphi diese beim Kompilieren (vielmehr der Linker) wild durcheinander (zumindest scheint es so!!!).

Ihr habt richtig gelesen: '...stellte sich anders dar:', die Lösung ist offenbar die unter Projekt -> Optionen -> Linker einstellbare Map-Datei (Detailiert). Seitdem ist der einzige Unterschied der, dass sich die Kompiler Daten (Zeit, etc... insgesammt 38 Bytes) unterscheiden.

Ich bedanke mich für die schnelle Hilfe! So konnte ich mir wenigstens die 38 Bytes erklären und kam auf einen neuen Ansatz. Nochmal DANKE! :D