Post by Sieghard SchicktanzHallo Hans-Peter,
Post by Hans-Peter DiettrichWenn das funktioniert, kann man mit Delphi Bugs im C Code besser jagen,
und die Korrekturen sollen dann wieder in den C Code eingebaut werden.
Na, viel Spaß...
Habe ich schon mehrfach erfolgreich durchexerziert, nur eben mit
manueller Übertrangung nach Pascal. So habe ich einem Bug in einem
Zip-Kompressor gefunden, der dort schon über 10 Jahre unerkannt
geschlummert hat :-)
Post by Sieghard SchicktanzPost by Hans-Peter DiettrichDabei stört es natürlich, wenn die Prozeduraufrufe in C und in Pascal
unterschiedliche Bezeichner verwenden. Ansonsten funktioniert die
Übersetzung schon ganz passabel :-)
Wenn Du schon einen Übersetzer hast, kannst Du dort doch einen Makro-
Generator mit einbauen? Oder Du könntest den C-Präprozessor direkt vor dem
Kompilieren laufen lassen.
Genau da bin ich gerade dran. Bislang werden alle Makros expandiert, und
machen damit die Zusammenhänge mit dem C Quelltext undurchsichtig.
Deshalb habe ich schon eine Erkennung für die Ersetzung von literalen
Makros (Zahlen und Strings als Ergebnis) eingebaut, die automatisch in
benannte Konstanten übersetzt werden, so daß die Makro-Namen auch im
Pascal Quelltext erhalten bleiben. Das läßt sich auch noch auf
Datentypen erweitern, nur bei Prozedurnamen spielt Delphi nicht mit.
Post by Sieghard SchicktanzPost by Hans-Peter DiettrichPost by Sieghard SchicktanzZumindest FPC (und damit Lazarus) kann Macros. Das ist ähnlich wie der
...
Post by Hans-Peter DiettrichDas weiß ich, ich möchte aber mit Delphi (D7) kompatibel bleiben.
Die #defines in C haben schon so viele Haken und Ösen, da wird es noch
lange kein funktional identisches Pascal-Äquivalent geben. Das ist auch
gut so, denn ein C Compiler verbringt die Hälfte seiner Zeit in der
Analyse des Quelltextes und der Expandierung von Makros. Ein
wesentlicher Grund, weshalb Delphi so viel schneller compiliert als C :-)
Post by Sieghard SchicktanzNaja, ich hatte irgendwie in Erinnerung, daß es schon damals eine "DEFINE"-
Direktive auch im Delphi-Compiler gab. Nachschauen hat sich jetzt bisserl
verzögert, aber jetzt habe ich gesehen, daß das auch tatsächlich der Fall
ist. Allerdins werden damit keine C-artigen "Makros" definiert, sondern nur
Compiler-interne Symbole für die bedingte Kompilierung.
Richtig, das nützt hier wenig. Abgesehen davon lassen sich auch
untypisierte Konstanten für die bedingte Übersetzung benutzen, man muß
also garnicht unbedingt $DEFINE verwenden.
Eine ganz andere Möglichkeit wäre ein Mix aus Delphi und C++Builder
Code, mit dem die Expansion von nicht direkt übersetzbaren Makros auf
den C++Builder abwälzen ließe. Ich fürchte allerdings, daß sich der so
aufgeteilte Quellcode mit dem ursprünglichen C Code nicht mehr richtig
vergleichen läßt. Bei der Fehlersuche kommt es mir ja nicht darauf an,
die Fehler nur im Pascal-Code zu beseitigen, sondern daß erkannte Bugs
auch im ursprünglichen C Code dauerhaft beseitigt werden können.
Post by Sieghard SchicktanzAndererseits - mit "{$MODE Delphi}" versucht FPC doch, soweit möglich
Delphi-kompatibel zu sein. Reicht das nicht vielleicht schon?
FPC und Lazarus leiden u.a. daran, daß sie ständig den neuesten
Delphi-Erweiterungen hinterherhecheln. Deshalb habe ich mich bei Delphi
auf D7 (Ansi) festgelegt, und bringe mein Programm damit zum Laufen. An
Unicode und andere Neuerungen möchte ich meine Programme nicht anpassen,
die bringen IMO keine Vorteile bei diesem Projekt. Außer wenn mir jemand
zeigen kann, wie sich dort Prozedur-Alias erzeugen lassen, oder echte
Makros nachbilden lassen.
DoDi