Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#12

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 17:31
Es gibt ja auch Lisp-Programmierer, die sind richtig hardcore drauf, denn Makros werden in Lisp selbst in der Programmiersprache Lisp programmiert.
Das wäre ungefähr so wie wenn der Sourcecode zuerst mit einem Pascal-Interpreter verarbeitet wird, bevor der Compiler ran darf.

Hier mal als kleine verrückte Idee.
Alles was zwischen #beginmacro und #endmacro liegt sind Anweisungen an den Pascal-Interpreter:
Delphi-Quellcode:
#beginmacro
function Forever():string; // neues Makro
begin
  result := 'while(True) do';
end;

function Sondersoftware(veriante:integer):string;
begin
  case veriante of
    1: result := 'x * x / 2.0';
    2: result := '(x * x / 2.0) + 0.0001';
  else
     raise Exception.Create('ungültige veriante von #Sondersoftware()'); // erzeugt Compilerfehler
  end;
end;

function RepeatInline(const Befehl:string; Anzahl:Integer):string;
begin
   result := '';
   while (Anzahl > 0) do
     Result := Result + Befehl + ';'+#13#10;
end;
#endmacro

// Beispiel
RepeatInline('ShowMessage(''Hello World'')', 5);
Aber man muss zugeben: Lisp ist irgendwie besser für Makros geeignet als Pascal/Delphi.
Andreas

Geändert von shmia (29. Okt 2012 um 17:36 Uhr)
  Mit Zitat antworten Zitat