Autor Beitrag
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2274
Erhaltene Danke: 419

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Fr 10.02.17 20:33 
Hallo Forum

Problemstellung:
Beim Hinzufügen weiterer WinAPI Funktionen, Konstanten und structs/records, kommt für gewöhnlich (aus Rücksicht zum C++ Builder) eine Delphi Compiler Direktive {$EXTERNALSYM xyz}.
Was mich daran irritiert, ist das WO genau es definiert wird. Entweder ist es über einem Ausdruck oder darunter.

Die Frage ist, ob es verschiedene Auswirkungen hat oder nicht.
Ist es egal ob ich es so oder so definiere:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
{$EXTERNALSYM SOME_CONSTANT}
SOME_CONSTANT = $0001;

// bzw. 
SOME_CONSTANT = $0001;
{$EXTERNALSYM SOME_CONSTANT}

// oder bei Typen:

_SOME_STRUCT = record
  Value1: Type1;
  Value2: Type2;
end;
{$EXTERNALSYM _SOME_STRUCT} // hier oder doch eine Zeile darunter ?
TSomeStruct = _SOME_STRUCT;
SOME_STRUCT = _SOME_STRUCT;
{$EXTERNALSYM SOME_STRUCT}  // hier oder doch eine Zeile darüber ?

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Di 14.03.17 18:01 
Delphi ist etwas her bei mir, deswegen habe ich gleich mal im Code von Indy nachgesehen und da wird die Direktive {$EXTERNALSYM SOME_CONSTANT} z.B. in der IdWinSock2.pas vor der Konstanten verwendet. Also im Zweifel würde ich diese Notation übernehmen.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
const
  {$EXTERNALSYM IOCPARM_MASK}
  IOCPARM_MASK = $7F;
  {$EXTERNALSYM IOC_VOID}
  IOC_VOID     = $20000000;
  {$EXTERNALSYM IOC_OUT}
  IOC_OUT      = $40000000;
  {$EXTERNALSYM IOC_IN}
  IOC_IN       = $80000000;
  {$EXTERNALSYM IOC_INOUT}
  IOC_INOUT    = (IOC_IN or IOC_OUT);

...

  {$EXTERNALSYM timeval}
  timeval = record
    tv_sec: Longint;
    tv_usec: Longint;
  end;
  TTimeVal = timeval;
  PTimeVal = ^TTimeVal;

_________________
Stellen Sie sich bitte Zirkusmusik vor.

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2274
Erhaltene Danke: 419

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 14.03.17 18:44 
Besten Dank, dann werde ich mich auch daran halten. :zustimm:

Das Thema hat sich erledigt !!!

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)