AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Abkürzungen für RTL-Funktionen möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Abkürzungen für RTL-Funktionen möglich?

Ein Thema von Harry Stahl · begonnen am 4. Okt 2018 · letzter Beitrag vom 5. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.558 Beiträge
 
Delphi 12 Athens
 
#1

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 21:44
@KodeZwerg und @AmateurProfi: Danke für Eure Antworten. Aber ich würde hier keine Lösungen haben wollen, die

A. Das Programm verlangsamen (Funktion ruft zusätzliche Funktion auf).
B. Das Programm größer machen.

Auch wenn beides im Einzelfall vielleicht nicht sonderlich ins Gewicht fallen würde.

Wenn es so etwas gegeben hätte, wie

Delphi-Quellcode:
Makro
  EFN = ExtractFilename;
Dann wäre das evtl. von Interesse gewesen, aber so etwas gibt's wohl nicht in Pascal/Delphi. Der Compiler hätte dann alle Stellen, wo EFN steht, durch ExtractFileName ersetzt. Dann gäbe es die oben beschriebenen Nachteile nicht.

Geändert von Harry Stahl ( 4. Okt 2018 um 21:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 22:12
Dein Vorhaben riecht doch sehr nach Präprozessor, gut, zu einer IDE-Integration kann ich nichts sagen, aber hier gibt es bestimm den einen oder anderen, der weiß wie man so etwas realisieren kann.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.558 Beiträge
 
Delphi 12 Athens
 
#3

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 22:17
Nachtrag: Hatte irgendwie dunkel in Erinnerung, dass unter C sowas ähnliches möglich ist (ich programmiere allerdings nicht in C, kann es gerade halbwegs lesen).

Hier mal ein Beispiel aus der BCC-Hilfe:

Code:
#define ERRMSG(x, str) printf("Fehler: %d \n%s", x, str)

/*Im Code kann man dann den Aufruf machen, wie */
/*wird erweitert zu: printf("Fehler: %d \n%s", 2, "Drücken Sie Eingabe, dann ESC"); */ 

ERRMSG(2, "Drücken Sie Eingabe, dann ESC");
Im übertragenen Sinne müsste da dann also sowas wie

Code:
#define EFN (x, str) ExtractFileName (x, str)
möglich sein.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.558 Beiträge
 
Delphi 12 Athens
 
#4

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 23:03
C++ scheint da schon mehr drauf zu haben, da gibt es ne Menge Präprozessor-Direktiven, u.a. habe ich auch gefunden:

#pragma alias "aliasName" = "substituteName"

(teilt dem Linker mit, dass zwei Bezeichnernamen äquivalent sind)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 23:10
Dann gäbe es da noch
Delphi-Quellcode:
const
  EFN: function(const FileName: string): string = SysUtils.ExtractFileName;
Volltreffer? ;-D
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 4. Okt 2018 um 23:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.558 Beiträge
 
Delphi 12 Athens
 
#6

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 23:44
Suuuperr!!!

KodeZwerg, Du bist ein Genie!

Hier muss ich noch ein "System" davor setzen, so dass es compiliert:

Delphi-Quellcode:
const
  EFN: function(const FileName: string): string = System.SysUtils.ExtractFileName;
Keine Geschwindigkeitsverluste da und auch der Code wird nicht größer, am Ende der gleiche Ablauf auch in CPU-Ansicht (siehe Anlage), der Verlauf ist absolut gleich, "call ExtractFilename" ist mit der SpeicherAdresse von "call dword ptr [$005e199c]" identisch. Auch die Codevervollständigung funktioniert mit der "Alias-" Definition.

Gibt es noch eine allgemeine Bezeichnung für diese Art der Definition?

Jedenfalls dank an alle, die konstruktiv bei der Lösung mitgewirkt haben, es zeigt sich mal wieder, dass man sich nicht entmutigen lassen darf und einfach weiter der Sache nachgehen sollte, ganz egal was andere einem unterstellen wollen...
Angehängte Grafiken
Dateityp: jpg cpu.jpg (46,1 KB, 13x aufgerufen)

Geändert von Harry Stahl ( 4. Okt 2018 um 23:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 23:51
Ich nenne es Alias per Definition, aber fühl Dich frei das selbst zu Entscheiden hehe
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 5. Okt 2018, 10:01
Hier muss ich noch ein "System" davor setzen, so dass es compiliert:

Delphi-Quellcode:
const
  EFN: function(const FileName: string): string = {$IF CompilerVersion >= 23.0}System.{$ENDIF}SysUtils.ExtractFileName;
Sollte für beide Welten legitim sein
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 4. Okt 2018, 23:57
C++ scheint da schon mehr drauf zu haben, da gibt es ne Menge Präprozessor-Direktiven, u.a. habe ich auch gefunden:
In C++ hast du auch noch Makros, wo du seit Jahrzehnten alles kannst machen, wovon die Generics nur träumen können.

Code:
#define ITPD(s) IncludeTrailingPathDelimiter(s)

Zitat:
Delphi-Quellcode:
const
   EFN: function(const FileName: string): string = System.SysUtils.ExtractFileName;
Normaler Weise sind typisierte Konstanten eigentlich schreibgeschützte Variablen ... also ich hätte da jetzt nicht erwartet, dass es hier nicht so ist.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Okt 2018 um 00:06 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#10

AW: Abkürzungen für RTL-Funktionen möglich?

  Alt 5. Okt 2018, 05:01
@KodeZwerg

Ein Alias ist das definitiv nicht, es fühlt sich aber so an und riecht auch so.

Darum: Respekt für diese kreative Lösung.


Es ist deswegen kein Alias, weil man bei einer Definitionsänderung (mehr oder weniger Argumente, andere Argumenttypen) diese Schein-Aliase nachführen muss. Bei einem echten Alias ist das nicht notwendig.

Das ist aber im Hinblick auf die RTL eher vernachlässigbar und darum hier nur ganz klein und unscheinbar angemerkt.
  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 06:32 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