AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Warum kennt Delphi eigentlich keine Makros?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum kennt Delphi eigentlich keine Makros?

Ein Thema von himitsu · begonnen am 28. Okt 2012 · letzter Beitrag vom 13. Jun 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.825 Beiträge
 
Delphi 12 Athens
 
#1

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 28. Okt 2012, 18:13
Indirekt kann man sowas wie unparametrisierte Makros schon verwenden.
Es ist nur etwas umständlich/häßlich/unübersichtlich/unpraktisch.

Zitat von Datei 'paramdef' oder halt 'paramdef.inc':
{$IFDEF XYZ_PARAMS}; xyz: Integer{$ENDIF}
Zitat von Datei 'param':
{$IFDEF XYZ_PARAMS}xyz{$ENDIF}
Delphi-Quellcode:
{$DEFINE XYZ_PARAMS}

procedure Test(abc: string {$I paramdef});
begin
  OtherProc(abc {$I param});
  Länger(abc {$INCLUDE param});
end;
Die selbe Technik, nur eben mit einer anderen Quelle und etwas mit Parameter aufgemotzt, wäre nötig.
(statt von Datei, aus einer Liste, welche über die DEFINEMACRO-Dinger befüllt wird)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Okt 2012 um 18:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.176 Beiträge
 
Delphi 12 Athens
 
#2

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 09:52
Also ich persönlich finde es schon in C++ schrecklich unübersichtlich. Ich hoffe, dass das niemals in Delphi kommt...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.829 Beiträge
 
Delphi 12 Athens
 
#3

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 10:05
Schließe mich jaenicke an und erhöhe um ein gepflegtes: "wozu soll das gut sein?"

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.883 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 10:09
Um Delphicode ähnlich unleserlich zu machen wie C++-Code.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.825 Beiträge
 
Delphi 12 Athens
 
#5

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 10:24
Also ich persönlich finde es schon in C++ schrecklich unübersichtlich.
So wie es in C++ ist, finde ich es auch schrecklich. Das Makro sieht ha wie eine normale Variable/Typ/Konstante aus
Aber als "erkennbarer" Compiler-Befehl find ich es doch ganz OK.

Um Delphicode ähnlich unleserlich zu machen wie C++-Code.
Das geht auch jetzt schon.
Ich find es leider nicht, aber ich hatte hier dieses/letzt Jahr doch mal einen Einzeiler gepostet, welcher ein "step" in die Forschleife baut.
Schön mit Gernics und Anonymen verschnuddelt ... ihr kennt doch diese einzeiligen C-Codes, wo tausende Rechenoperationen "verschlüsselt" sind.

Es geht mir halt um eine Headerübersetzung.
Diese wird in Zukunft öfters mal angepaßt werden müssen und da fände ich es praktisch, daß es halbwegs wie im Original aussieht.
Ich hab es jetzt erstmal mit den Include-Dateien gelöst, aber leider kann Delphi nachwievor nicht ordentlich damit arbeiten.

Debuggen ist grausam und bei Fehlern muß man erstml umständlich suchen, weil bei einem Fehler in der IncludeDatei, bzw. wenn der Fehler eigentlich in der PAS beginnt, aber in der INC aufrtitt, dann zeigt der Debugger, aber vorallem der Compiler nicht an, aus welcher Datei der Aufruf (die Einbindung) kam.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.375 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 10:58
Dein Beispiel mit den Macro-Schaltern finde ich auch eher verwirrend (aber auf sowas stehst Du ja immer ).

Deine Problemschilderung mit den Includes kann ich aber gut nachvollziehen und verzichte deswegen meist darauf.

Alternativ zu Macros (wie ich das verstanden habe) würde ich mir andere Lösungen wünschen:

Eine Überarbeitung des Quelltexteditors wäre in dem Zusammanhang nochmal überdenkenswert. Wir hatten das schon mal angesprochen in Bezug auf mehrere Editorfenster...

Grundsätzlich wäre es nett, wenn eine Unit nicht generell stur komplett im Editor stehen würde, sondern die einzelnen Klassen, Funktionen und Methoden (auf Wunsch) in eigenen Editoren bearbeitet werden könnten. Wenn ich eine Funktion ausfülle, dann brauche ich ja nicht die gesamte Unit im Editor sehen, sondern lediglich die Bereiche, auf die ich von der aktuellen Stelle aus zugreifen kann. Also ich würde gern im Interface-Teil eine Funktion definieren und das Ausfüllen dann (z.B. nach Doppelklick) optional in einem eigenen Editor erledigen.
Darüber hinaus könnte auch ein Include-Code real im Code eingebunden und dargestellt werden (vielleicht farbig hinterlegt) und Änderungen würden (automatisch im Hintergrund in die externe Datei gespeichert und) in allen anderen Units übernommen, wenn man zu einer solchen wechselt.

Ich könnte mir da ein paar hilfreiche Dinge vorstellen. Ob Emba sich aber die Zeit für solchen Kleinkram nimmt...
Das Beispiel Debugger Canvas trifft es nicht ganz, zeigt aber, dass man nicht zwangsläufig nur eine komplette pas editieren muss.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.176 Beiträge
 
Delphi 12 Athens
 
#7

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 11:06
Eine Überarbeitung des Quelltexteditors wäre in dem Zusammanhang nochmal überdenkenswert. Wir hatten das schon mal angesprochen in Bezug auf mehrere Editorfenster...
Das Problem ist bei den ausgedockten separaten Editorfenstern bei Delphi XE vor allem, dass deren Positionen nicht ordentlich gespeichert werden. Dadurch schwirren die insbesondere bei mehreren Bildschirmen sinnlos über den Bildschirm.
Das ist dann fast so schlimm wie bei Delphi 7 und früher...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.883 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 11:08
Du könntest die Klassen auch in Regionen packen und dann nur die jeweils "richtige" eingeblendet lassen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 12:53
So wie es in C++ ist, finde ich es auch schrecklich. Das Makro sieht ha wie eine normale Variable/Typ/Konstante aus
Hae? Makros erkennt man doch sehr gut, an der Grossschreibung. Und wenn Typen oder Konstanten komplett grossgeschrieben werden, dann liegt das daran, dass es ein Makro ist (bzw. typedef, aber wo ist schon der Unterschied?)
  Mit Zitat antworten Zitat
shmia

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

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
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz