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
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#1

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 13. Jun 2014, 09:14
Wobei UNLESERLICH nicht für alles gilt.
Bei jeder Sprache und Spracherweiterung gibt es Leute, die schlechte lesbaren Code schreiben und andere die so etwas nicht schaffen

Zitat:
Die __LINE__ und __FILE__-Makros vom PHP wären eigentlich ganz nett, vorallem für den Code der Fehlerbehandlung und das Logging.
Ergänze: __FUNCTION__ zumindest in C gibt es die drei.

Zitat:
Und was das "Mehrfachvererben" ist vielleicht ein zu großes Wort für:
Ich hab mehrere Klassen ala TEdit, TButton usw. und mächte denen allen ein zusätzliches "gleiches" Property/Funktion verpassen,
wobei man das hier nunmal nicht in einen gemeinsamem Vorfahren reinmachen kann, sondern nur in einen jeweils "gleichartig" erweiterten Nachfahren.
Hierbei ist das Makro dann ein an einer Stelle notierter Copy&Paste-Code, den man sonst überall reinkopieren würde.
So etwas müsste sich doch mit Generics á la
Code:
TControlExtended<TEdit>
machen lassen. Ich habe keine passende delphiversion um das auszuprobieren, aber im C# kann man das AFAIR machen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 13. Jun 2014, 09:45
Nein, denn in Generics gibt es Einwas, das man nicht generisch machen kann und das ist der Vorfahre, da die Generics ebenfalls immer nur eine Einfachvererbung können.

Das geht nicht und das wäre dafür dann nötig
Delphi-Quellcode:
type
  TMyClass<TVorfahr> = class(TVorfahr)
  end;
Sowas geht zwar
Delphi-Quellcode:
type
  TMyClass<TAndereClasse> = class
  private
    FGekapselt: TAndereClasse;
  published
    property Gekapselt: TAndereClasse read FGekapselt;
  end;
Aber grade in der VCL ist das auch nicht so gut, außer du fängst an nochmal alles z.B. in unsichtbaren TPanels zu kapseln und findest dann alle Property versteckt als Unterproperty in dem Gekapselt, da die Generics Diese nicht alle nach oben durchreichen kann, weil sie ja überall unterschiedlich sind, oder du schreibst die Weiterleitungen wieder manuell überall rein.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#3

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 13. Jun 2014, 10:20
Nein, denn in Generics gibt es Einwas, das man nicht generisch machen kann und das ist der Vorfahre, da die Generics ebenfalls immer nur eine Einfachvererbung können.

Das geht nicht und das wäre dafür dann nötig
Delphi-Quellcode:
type
  TMyClass<TVorfahr> = class(TVorfahr)
  end;
Dann würde ich mir eher wünschen, dass das ginge. Mit Mehrfachvererbung hat das ja nichts zu tun, weil ich immer noch eine eindeutige Ableitungskette TObject->TComponent->...->TEdit->TGen<TEdit> habe.

Übrigens kann man sich für's Loggen einen Präprozessor schreiben, der geschriebene Aufrufe

Log('blabla'); in Aufrufe

Log('blabla', 'u_TestUnit', 234, 'TestFunction'); übersetzt bzw. die bereits vorhandenen weiteren Parameter aktualisiert.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Warum kennt Delphi eigentlich keine Makros?

  Alt 13. Jun 2014, 10:43
Die zwei PHP Beispiele sind eher schlecht gewählt, für das Logging bringt das nämlich nicht so wahnsinnig viel. Wir haben das früher immer mitprotokolliert, aber inzwischen verzichten wir darauf. Der Mehrwert ging gegen null, da sich die Log-Meldungen ja sowieso unterscheiden. Und für das Logging im Fehlerfall ist es untauglich, da man dort ja eigentlich eher die Infos aus dem Stack-Trace braucht, also das von wo wurde aufgerufen, weniger das was (denn den Ort kennt man ja aus der Meldung).

Was die VCL angeht: Bei dem Fall wäre ich eher für Class Helper. die auf mehrere Klassen passen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:45 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