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 4  1 23     Letzte »    
Benutzerbild von himitsu
himitsu

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

Warum kennt Delphi eigentlich keine Makros?

  Alt 28. Okt 2012, 18:38
Warum kennt Delphi eigentlich immernoch keine Makros?
Vorallem beim Übersetzen von C-Headern wäre sowas einfach zu praktisch.


So schwer sollte das doch nicht zu implementieren sein?
Und es, bezüglich der Delphi-Language, kompatibel zu implementieren ist och nicht unmöglich.

Delphi-Quellcode:
{$DEFINEMACRO param '; xyz: Integer'}
{$DEFINEMACRO param_x ', xyz'}
{$DEFINEMACRO say 'Beep; ShowMessage(''Hello %1'');' string}
{$DEFINEMACRO msg '(''%3'' + Format('' %%s %%d'', [''%1'', %2]))' string integer string}

procedure Test(abc: string {$MACRO param}); // procedure Test(abc: string ; xyz: Integer);
begin
  {$IFMACRO param}
    ShowMessage(IntToStr(xyz));
  {$ENDIF}
  OtherProc(abc {$MACRO param_x});

  {$MACRO param 'World'}  // Beep; ShowMessage('Hello World');

  ShowMessage{$MACRO msg 'World' 123 'Hello'}; // ShowMessage('Hello' + Format(' %%s %%d', ['World', 123]));
end;
Der Compiler braucht das doch nur beim Parsen im Code zu ersetzen und danach zu interpretieren.

Natürlich sollte er alle Zeilenumbrüche in den Macros ignorieren (durch Leerzeichen zu ersetzen) ... dann dürfte auch der Debugger keine Probleme bekommen, da sich die Zeilenpositionen nicht verändern.


Voll blöd, daß man immernoch nicht wieder selber einen Precompiler reinhängen kann, um das selbst zu implementieren.
$2B or not $2B

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

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

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 28. Okt 2012, 18:49
Der Free Pascal Compiler kennt Makros in einfacher Form:
Delphi-Quellcode:
{$macros on}
{$define blabla:=tudiesunddas(xyz);undnochwas();xyz:=123}

...

blabla; // tudiesunddas(xyz);undnochwas();xyz:=123;
Bloss Parameter sind noch nicht unterstuetzt. Aber parametrisierte Makros sind doch quasi nichts gross anderes als Inline-Routinen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 28. Okt 2012, 19: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)
$2B or not $2B

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

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 10: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.800 Beiträge
 
Delphi 12 Athens
 
#5

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 11: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.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 11: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.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 11: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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 11: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
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 12: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.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 29. Okt 2012, 12:08
Du könntest die Klassen auch in Regionen packen und dann nur die jeweils "richtige" eingeblendet lassen
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 10:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz