Frage an delphi, compiler-errors, delphi-xe – Wie kompiliere ich Änderungen an der VCL-Quelldatei (Menus.pas) neu?

8

Wir haben eine geänderte menu.pas.

Beim

<code>uses ...,Controls,...;
</code>

Der Compiler hat einen schwerwiegenden Fehler ausgelöst:

[Schwerwiegender DCC-Fehler] Menus.pas (*): F2051 Unit Controls wurde mit einer anderen Version von Menus.TPopupMenu kompiliert

versucht:

löschte alle DCU im Projekt.

bauen

Alles bauen

Ich habe versucht, die Datei zum Bibliothekspfad hinzuzufügen, der zum Hinzufügen des Datenbankordners (auch von vcl) und dann zu führt

[DCC-Fehler] jpeg.pas (872): E2065 Unzufriedene Weiterleitung oder externe Deklaration: 'jpeg_save_markers'

Das ist eine Sackgasse.

Die Datei controls.dcu (alle 3) wurde gelöscht, und das Delphi wusste nicht, dass es sie automatisch neu kompilieren sollte. Stattdessen wurde gemeldet, dass die Datei controls.dcu fehlt.

Ändern Sie besser keine Datei in einem der Standard-Delphi-Ordner. Legen Sie alle Ihre geänderten Quelldateien in einem eigenen Ordner ab und fügen Sie diesen Ordner in den Suchpfad der Projektoptionen ein (oder in den Bibliothekspfad der Optionen, wenn Sie sicher sind, dass Sie immer die geänderten Dateien verwenden). Sertac Akyuz
Aber was Sie versuchen, ist durchaus machbar. Ich tue genau das, um die vielen Fehler in Menus.pas zu beheben. David Heffernan
Sie haben also dieMenus.pas im Quellordner von Delphi? Sie müssen beachten, dass das Debuggen und die Laufzeit*.dcu Dateien werden im Verzeichnis .. \ lib und optional in Unterverzeichnissen gespeichert (ich habe derzeit nur Delphi 2009 von Hand, daher kann es leicht abweichen). TLama
IIRC, wenn Sie eine Datei aus Delphis Quelle ändern, müssen Sie alles in einer bestimmten Reihenfolge neu kompilieren, ich habe es nie getan ... ComputerSaysNo

Deine Antwort

1   die antwort
12

So gehe ich mit Änderungen an VCL-Quelldateien um:

Kopieren Sie die Datei in Ihre Projektstruktur. Fügen Sie die Datei entweder Ihrem Projekt hinzu oder stellen Sie sicher, dass der Suchpfad Ihre geänderte Datei findet.Nehmen Sie Änderungen vor, jedoch nur im Implementierungsabschnitt. Sie können den Schnittstellenabschnitt nicht ändern, wenn Sie andere Einheiten verwenden, die selbst die Einheit verwenden, die Sie ändern.Stellen Sie die Compileroptionen explizit oben in der geänderten Quelldatei ein. Verwenden Sie die Standard-Delphi-Optionen, die Sie durch Drücken von STRG + O O in einem Standard-Vanille-Projekt finden.

Ich würde vermuten, dass einer der letzten beiden Punkte ist, was Sie auslöst.

@ kobik Meine Einheiten haben gerade{$R-,T-,H+,X+}. Ich vermute, dass meine Projektkompilierungsoptionen mit allen anderen übereinstimmen. Das Hinzufügen einer vollständigen Site, z.{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-‌​,U-,V+,W-,X+,Y+,Z1}. Aber mehr brauchst du nicht, denke ich. David Heffernan
Nun, das habe ich beim Pressen bekommenCTRL+O O in einem leeren Projekt. Mir war die Standard-Compiler-Direktive in einer modifizierten VCL überhaupt nicht bekannt. Vielen Dank! kobik
@ David, soll ich das hinzufügen{$MINSTACKSIZE $00004000}, {$MAXSTACKSIZE $00100000}, {$IMAGEBASE $00400000} Standardeinstellungen auch? oder nur die Standardeinstellung$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1} (Delphi 5) - das wird mit erzeugtCTRL+O O. kobik
In xe: CloseMenu wurde eine neue Prozedur hinzugefügt. none

Verwandte Fragen