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.479 Beiträge
 
Delphi 11 Alexandria
 
#1

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

  Alt 4. Okt 2018, 18:04
Ist es eigentlich irgendwie möglich, dem Compiler irgendwelche selbst definierten Abkürzungen (Alias) für lange Funktionsnamen beizubringen?

Mich ärgern so Sachen wie

IncludeTrailingPathDelimiter

oder auch nur ExtractFileName.

Es macht die Zeilen lang und versperrt die Sicht auf eigentliche Funktionalität.

So könnte man Abkürzungen definieren etwa wie EFN (für ExtractFilename ) oder (ITPD)

Bin mir selber nicht ganz sicher, ob das sinnvoll wäre, aber mich würde vor allem interessieren, ob das technisch möglich wäre.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

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

  Alt 4. Okt 2018, 18:12
Klingt irgendwie nach einem XY-Problem.

Zitat:
Es macht die Zeilen lang und versperrt die Sicht auf eigentliche Funktionalität.
Deutet für mich auf sowieso unübersichtlichen Code hin, in dem nicht nur bisschen Dateipfade oder so zusammengetüftelt werden sondern noch anderes Zeugs.
Ansonsten könnt man die eigentliche Funktionalität nämlich am Methodennamen ablesen.

Stichwort: Single Level of Abstraction
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 4. Okt 2018 um 18:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 4. Okt 2018, 19:11
Für Typen kann man Aliase erstellen,
bei Variablen kann man sie überdecken (absolute),
aber für Funktionen kann man nur pointern oder inlinen.

Nur für Interfaces kann man bei der Implementation eine "Umleitung" auf andere Methodennamen definieren.

Für verschobene/zentralisierte Funktionen hatte ich mir aber auch schon ein/zwei Mal eine Alias-Behandlung oder Umleitung gewünscht.
z.B. in der alten Unit weiterhin den Aufruf im Interface, aber die Implementierung in der neuen Unit. (ohne das durch eine neue Inline-Methode schieben zu müssen, was z.B. bei Array-Property oftmals sich nicht inlinen lässt)

Delphi-Quellcode:
var kurz: procedure(....);

kurz := @gaaaaaaaaaaanzlang;
Die Variablen kann man auch hinter einem readonly Property oder eventuell auch hinter einer writeable Konstante verstecken.

Delphi-Quellcode:
procedure kurz(...); inline;
begin
  gaaaaaaaaaaanzlang(...);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 4. Okt 2018, 19:37
@ Stevie: Nö, weder XY-Problem, noch Single Level ob abstraction.

Während sich das XY-Problem ja auf den Fragesteller bezieht, wie nennt man es eigentlich, wenn der Antwortende nicht auf die eigentliche Frage eingeht (technische Machbarkeit), sondern statt dessen Vermutungen über Intentionen des Fragestellers oder gegebene Umstände ("sowieso unübersichtlicher Code") anstellt?
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#5

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

  Alt 4. Okt 2018, 19:42
@Harry

Du programmierst doch nicht erst seit gestern und du hast bestimmt schon mal eine procedure oder function geschrieben.

Die Lösung ist so naheliegend (siehe himitsu), dass man echt ins Grübeln kommt, was du eigentlich wirklich fragen willst.

Wenn du nur wissen willst, wie man eine procedure oder function mit einem kurzen Namen schreibt, die dann eine procedure oder function mit langem Namen aufruft, dann kann ich irgendwie nur ungläubig mit dem Kopfe schütteln
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 4. Okt 2018, 19:57
@Schokohase: Hast Du die Frage genau gelesen?

Ich habe gefragt:

"Ist es eigentlich irgendwie möglich, dem Compiler irgendwelche selbst definierten Abkürzungen (Alias) für lange Funktionsnamen beizubringen?"

Und: Nicht für eigene, sondern für RTL-Funktionen.

Ich wollte da keine Umwege über Pointer oder Aufruf von anderen Funktionen gehen.

Es geht doch z.B.

Type
str = string;

Daher fragte ich mich, ob es so etwas ähnliches nicht auch für Funktionen gibt. Es geht also eher um eine Art Makro-Funktionalität.

Und nein, ich bin mir nicht zu schade, um im Zweifel auch mal eine Frage zu stellen, wo jemand meinen könnte, den Kopf schütteln zu müssen.

Eine alte chinesische Weisheit sagt da:

Wer fragt, ist vielleicht ein Narr für fünf Minuten. Wer nicht fragt, bleibt ein Narr für immer.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

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

  Alt 5. Okt 2018, 10:14
@ Stevie: Nö, weder XY-Problem, noch Single Level ob abstraction.

Während sich das XY-Problem ja auf den Fragesteller bezieht, wie nennt man es eigentlich, wenn der Antwortende nicht auf die eigentliche Frage eingeht (technische Machbarkeit), sondern statt dessen Vermutungen über Intentionen des Fragestellers oder gegebene Umstände ("sowieso unübersichtlicher Code") anstellt?
Ich sags mal so: was du in deinem eigenen Code, den nur du lesen und warten musst, machst, ist mir herzlich egal - ich sprach das nur an, weil man ja auch manchmal Code schreiben möchte, der auch für andere verständlich ist, und wenn man da plötzlich nur noch TLAs im Code findet, wo man erstmal grübeln muss, was sie bedeuten, dann fördert das nicht die Lesbarkeit. Also entschuldige bitte, wenn ich auch mal über die eigentliche Fragestellung hinausblicke
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#8

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

  Alt 4. Okt 2018, 21:13
@Harry Stahl:

Mir fällt nur eine Lösung ein, nicht ganz was du willst aber ...

Erstelle eine Unit, die du in allen Units unter Uses aufführst und schreibe in diese Unit Prozeduren/Funktionen mit den Namen, die Dir gefallen.

Und diese Funktionen rufen dann die Routinen mit den Dir zu langen Namen auf.

Ich hab mal etwas ähnliches gemacht, allerdings mit einer anderen Zielsetzung.

Bei mir war das die Prozedur ShowMessage.
Ich nutze die oft (so wie vermutlich jeder), um irgendwelche Rechenergebnisse, auszugeben.
Irgendwann war ich es leid immer zu schreiben
ShowMessage(IntToStr(A)+', '+IntToStr(B)+', '+IntToStr(C));
oder
ShowMessage(IntToStr(A)#13+IntToStr(B)+#13+IntToStr(C));
Also schuf ich solch eine Unit die u.A. zwei Prozeduren enthielt konnte dann schreiben

Mess([A,B,C]); oder
Mess([A,B,C], #13); oder auch
Mess(IntToStr(A)+' '+IntToStr(B)+' '+IntToStr(C));
Delphi-Quellcode:
interface

uses
   Vcl.Dialogs;

PROCEDURE Mess(const Args:array of const; const Delimiter:String=', '); overload;
PROCEDURE Mess(const S:String); overload;

implementation

PROCEDURE Mess(const Args:array of const; const Delimiter:String=', ');
var I:Integer; S:String;
begin
   for I:=0 to High(Args) do
      with Args[I] do begin
         case VType of
            vtInteger : S:=S+IntToStr(VInteger);
            vtBoolean : S:=S+BoolToStr(VBoolean);
            vtChar : S:=S+VChar;
            vtExtended : S:=S+FloatToStr(VExtended^);
            vtString : S:=S+VString^;
            vtPointer : S:=S+IntToHex(NativeInt(VPointer),SizeOf(Pointer)*2);
            vtPChar : S:=S+VPChar;
            vtObject : S:=S+VObject.ClassName;
            vtClass : S:=S+VClass.ClassName;
            vtWideChar : S:=S+VWideChar;
            vtPWideChar : S:=S+VPWideChar;
            vtAnsiString: S:=S+string(VAnsiString);
            vtCurrency : S:=S+CurrToStr(VCurrency^);
            vtVariant : S:=S+string(VVariant^);
            vtInterface : S:=S+String(VInterface);
            vtInt64 : S:=S+IntToStr(VInt64^);
            else Continue;
         end;
         S:=S+delimiter;
      end;
   if S<>'then SetLength(S,Length(S)-Length(Delimiter));
   ShowMessage(S);
end;

PROCEDURE Mess(const S:String);
begin
   ShowMessage(S);
end;

end.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#9

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
 
#10

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
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 02:31 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