Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Aprile 10, 2012, 06:30:12 pm

Titolo: Creare un mio "$IFDEF"
Inserito da: bonmario - Aprile 10, 2012, 06:30:12 pm
Ciao a tutti,
scusate per i termini che userò, ma non so proprio come si chiamano.
Sono abituato ad usare questi "$IFDEF" per esempio se voglio che un particolare codice venga compilato solo su windows:
Codice: [Seleziona]
  {$IFDEF MSWINDOWS}
    fai quello che devi fare
  {$ENDIF}

Avrei la necessità di crearne uno mio in cui vado a testare l'esistenza di un file sul disco per capire se devo compilare il codice contenuto o meno.
Sapete dirmi se si può fare una cosa del genere ed eventualmente come?

Grazie in anticipo, Mario
Titolo: Re:Creare un mio "$IFDEF"
Inserito da: nomorelogic - Aprile 11, 2012, 08:51:10 am
sono le direttive per il compilatore

per fare un esempio guarda il codice sotto:
Codice: [Seleziona]
{$DEFINE MIA_DIRETTIVA}

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage('Sempre visualizzato');
   {$IFDEF MIA_DIRETTIVA}
   ShowMessage('dipende dalla direttiva');
   {$ENDIF}
end;


una direttiva la puoi dichiarare direttamente nel sorgente prima che venga testata ma questo vale solo per la unit locale.
se hai bisogno della stessa direttiva in più unit potresti fare un file a parte da includere poi in ogni unit.

immagino la cosa ti serva per creare una demo od una trial (deve funzionare in un certo modo punto e basta) altrimenti cerca di capire se veramente hai bisogno di una direttiva o di un semplice "if".
Titolo: Re:Creare un mio "$IFDEF"
Inserito da: bonmario - Aprile 11, 2012, 10:46:01 am
Grazie dell'aiuto, mi hai dato un'idea per risolvere il problema.

Praticamente il problema è questo: ho un programma che uso sia al lavoro che a casa. Qui al lavoro fa delle operazioni in più sfruttando i sorgenti che ho scaricato dal sito della Novell. Compilando il programma a casa mi dava un errore perché non trovava i files di Novell installati (se non ricordo male gli errori erano riferiti ad alcune Dll).

Seguendo il tuo consiglio ho fatto così:
- ho creato in file Inc qui al laìvoro che attiva la direttiva "UsaNovell"
- stasera a casa ne creerò uno nello stesso percorso e con lo stesso nome che disattiva la direttiva "UsaNovell"
- Ho messo in testa al sorgente incriminato il richiamo al file inc
- all'interno del sorgente ho racchiuso tutti i richiami ai sorgenti/funzioni Novell in modo che siano utilizzati solo se la direttiva è attivata.

Se non ho sbagliato niente dovrebbe funzionare !!!!
Grazie ancora, Mario