Dyrektywa {$DEFINE } w pliku .dpr

0

Witam serdecznie,
chciałem się Was forumowicze poradzić jak ominąć pewne ograniczenie,
mam jedną formatkę w której mam kawałek kodu opatrzony
{$IFDEF KOMUNIKAT1}
...
{$ENDIF}

{$IFDEF KOMUNIKAT2}
...
{$ENDIF}

{$IFDEF KOMUNIKAT3}
...
{$ENDIF}

{$IFDEF KOMUNIKAT4}
...
{$ENDIF}

ta formatka jest wykorzystana w kilku programach i teraz w zależności jaki program chciałem w kompilacji poprzez {$DEFINE KOMUNIKAT*} wybrać odpowiedni fragment kodu z tej formatki, jeśli {$DEFINE KOMUNIKAT*} użyję w głównej formie programu wszystko działa jak powinno, natomiast jeśli
{$DEFINE KOMUNIKAT*} umieszczę w pliku projektu .dpr kompilator wylatuje.

0

kod i komunikat błędu - wróżki strajkują

0

Wiam,
tu przykladowy kod http://www.zshare.net/download/57281581fa68a0fc/
pozdrawiam

0

Przepraszam że jeden pod drugim ale zamieszczę sam kod na stronie jak kogoś interesuje caly projekt jest do pobrania z linku wyżej.

Project1.dpr

program Project1;

{$DEFINE PROG1}

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Project2.dpr

program Project2;

{$DEFINE PROG2}

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Unit1.pas

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
{$IFDEF PROG1}
 Form1.Caption:='Program 1';
{$ENDIF}

{$IFDEF PROG2}
 Form1.Caption:='Program 2';
{$ENDIF}
end;

end.

Unit1.dfm

object Form1: TForm1
  Left = 0
  Top = 0
  ClientHeight = 213
  ClientWidth = 339
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
end

0

no dobra, a gdzie Ci ten komunikat i o jakiej treści wyskakuje??

0

dziękuję za zainteresowanie tematem,
cytuje sam siebie

...umieszczę w pliku projektu .dpr kompilator wylatuje...

źle się wyraziłem a na pewno nie dokladnie, chdzi o to że "olewa" kod w czasie kompilacji jak w tym przykladzie.

0

no to przecież logiczne - definicje masz w dpr a ifdef w unit - unit nie idzi definicji w dpr. Chcesz się tak bawić to stwórz plik cos.inc, tam wpisz swoje define, a w unit dodaj taką linijkę {$I cos.inc}

btw popracuj nad zadawaniem pytań i opisywaniem problemu...

0

Bardzo dziękuję za odpowiedź, takiej informacji, wskazówki oczekiwałem.
Doczytam o pliku .inc
Raz jeszcze dziękuję i Podrawjam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1