Thema: Delphi Indy compile problem

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Indy compile problem

  Alt 11. Aug 2007, 11:26
Hi,
diese Compiler-Einstellungen sind vielmehr Compiler-Direktiven. Du kannst Dir die Verarbeitung wie die durch einen C-Präprozessor vorstellen. Der Compiler läuft (virtuell) in zwei Schritten über den Quelltext, im ersten werden solche Direktiven ausgewertet, im zweiten der dann resultierende Code kompiliert.
Das was Du in dem geposteten Code findest ist eine Form der bedingten Compilierung, es wird geprüft, ob die entsprechende Bedingung gesetzt wurde und der Code zwischen $IFDEF (und den verwandten) sowie $ENDIF wird nur dann eingefügt, wenn die entsprechende Bedingung gesetzt ist.
Das Setzen findest Du in den Projektoptionen beim Compiler irgendwo (heißt Bedingungen, wenn ich mich nicht irre). Dort kannst Du dann z.B. einfach WidgetWinForms eintragen. Einige solcher Schalter werden aber auch von Delphi selbst gesetzt und sollten deswegen nicht einfach verändert oder per Hand gesetzt werden, dazu gehört unter anderem eben die Version des Compilers selbst und ob es sich um ein Win32 oder Kylix Compiler handelt.

Das Problem in Deinem Fall liegt in folgendem Code:
Delphi-Quellcode:
uses
  Classes,
  IdSocketHandle,
  {$IFDEF WidgetWinForms} 
  IdDsnPropEdBindingNET;
  {$ENDIF} 
  {$IFDEF WidgetVCLLikeOrKylix} 
  IdDsnPropEdBindingVCL;
  {$ENDIF}
Hier steckt einfach das abschließende Semikolon in einer solchen Bedingung, besser wäre es deshalb das ganze in folgende Form zu bringen:
Delphi-Quellcode:
uses
  Classes,
  IdSocketHandle
  {$IFDEF WidgetWinForms} 
  ,IdDsnPropEdBindingNET
  {$ENDIF} 
  {$IFDEF WidgetVCLLikeOrKylix} 
  ,IdDsnPropEdBindingVCL
  {$ENDIF}
  ;
Wie Du siehst wurde das Komma so verschoben, dass es nun vor einem eventuell zusätzlichen Element steht und das Semikolon wird (unabhängig von den bedingten Teilen) direkt am Ende eingefügt.

Gruß Der Unwissende
  Mit Zitat antworten Zitat