was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

29 Visitors Online


 
...eine Prozedur/Funktion mit einer variablen Parameter Anzahl erstellen?
Autor: Andrei A. Lobanov
[ Tip ausdrucken ]  

Tip Bewertung (25):  
     


{ .... }

type
  
VA_FN = function(const par1, par2{, ...}: Pointer): Boolean;
                   cdecl varargs;

{ .... }

//
// varargs without "external" keyword
//
function fn(const par1, par2{, ...}: Pointer): Boolean; cdecl;
var
  
last_arg: Pointer absolute par2;
  ptr_args: array[0..MAXLONG shr 2] of Pointer absolute last_arg;
  dw_args: array[0..MAXLONG shr 2] of Cardinal absolute last_arg;
  s_args: array[0..MAXLONG shr 2] of PChar absolute last_arg;
  w_args: array[0..MAXLONG shr 2] of WideString absolute last_arg;
begin
  
// ptr_args[1] is first optional argument
  
Result := (ptr_args[1] {par3} = Pointer(1)) and
    
(dw_args[2] {par4} = 2) and
    
(string(ptr_args[3]) = 'CHAR') and
    
(w_args[4] = 'WCHAR');
end;

procedure test_fn;
begin
  
// VA_FN typecast
  
VA_FN(@fn)({par1}nil{par2}nil{par3}Pointer(1), {par4}2, {par5}'CHAR',
    {par6}WideString('WCHAR'));
end;

 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners