Mam różne definicje do obsługi różnych wersji Delphi w pliku włączającym. Obejmuje to plik "dołączony" do jednostki. Kompilator respektuje definicje podane w pliku włączającym, ale IDE nie. Powoduje to dodanie niektórych jednostek do klauzuli uses, które mogą już tam być - są zawarte w dyrektywie DEFINE kompilatora.Jak warunkowo dołączyć niektóre jednostki
W związku z tym, jeśli dodana zostanie jednostka, która nie jest dostępna w Delphi XE3, napotkasz duży problem, ponieważ jeśli IDE doda jednostkę i nie może skompilować jej z wersją Delphi XE3, która nie mieć tę jednostkę.
E.g. projekt z jedną jednostką z listą TActionList.
MYINCLUDE.INC
tylko jedno określenie{$DEFINE DELPHIXE3}
Jednostka próbka może wyglądać
unit Unit1; {$I MYINCLUDE.INC} uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, {$IFDEF DELPHIXE3} System.Actions, {$ENDIF} Vcl.ActnList; ...
Po udanej IDE dodaje
System.Actions
dodać koniec listy zastosowań, które z kolei powoduje Identyfikator ponownie zgłoszono błąd kompilatora. Jeśli go usuniesz, IDE doda go ponownie do następnego zapisu.
Po prostu zgłosiłem to do QC#111178.
Czy istnieje obejście tego błędu?
Christian
IDE zawsze było trochę kiepskie warunkowe parsowania. Oczekuję, że twój raport QC zostanie zamknięty zgodnie z założeniami. Kwestia poruszana była wielokrotnie, zawsze z tą samą odpowiedzią. –
IDE zawsze zniekształcone warunki w plikach * .dpk, ale ten problem jest czymś nowym i rozczarowujące. – kludg
@Serg To zawsze zachowywał się w ten sposób również w plikach .pas. Nic nowego tutaj. Byłem taki od zawsze. –