AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionsname im COde nutzen

Ein Thema von t2000 · begonnen am 21. Mär 2020 · letzter Beitrag vom 23. Mär 2020
Antwort Antwort
Seite 2 von 2     12   
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#11

AW: Funktionsname im COde nutzen

  Alt 22. Mär 2020, 19:26
Die "Idee" ist recht einfach umsetzbar... "C++Like" mit einem eigenem kleinen PreProzessor

Also man schreibe sich fix ein kleines Programm, welches man in der IDE unter "RunBeforeCompile" und "RunAfterCompile" konfiguriert.

Neben __FILE__, __LINE__, __FUNCTION__ sind auch __DATE__ und __TIME__ für als CompileTimeStamp sehr nützlich... also:
- schauen, ob zum PasFile KEINE BackupDatei (z.B. "?.pas.pre") da ist
- das PAS File zeilenweise im einfachsten Fall in eine "Stringlist" einlesen und diese "zeilenweise" durchlaufen
- zeilenweie bei "procedure" und "function" das was dahinter kommt, also bis zur KlammerAuf bzw dem Semikolon für "__FUNCTION__" merken
- zeilenweie 5x "StringReplace" für '__FILE__', '__LINE__', '__FUNCTION__', '__DATE__', '__TIME__"
- wenn durch, org. PasFile umbenennen(z.B. "?.pas.pre") sowie StringList als PasFile abspeichern und den "PreProzessor" beenden
- Delphi übersetzt nun den Code mit den "eingesetzten RealStrings"
- anschließend wird der "PreProzessor" ein zweites mal gestartet, und benennt das PasFile z.b: in "?.pas.txt" um, und anschließend das gesicherte "?.pas.pre" wieder in "?.pas" (man könnte das auch als zweites sepatates "Restore&CleanUp" Programm schreiben)

Zur Optimierung sollte man das Tool via geeignetem DirectoryFilter davon abhalten fremden Source also Komponenten,Libs,RTL,VCL,FMX,... zu bearbeiten

Geändert von mensch72 (22. Mär 2020 um 19:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Funktionsname im COde nutzen

  Alt 22. Mär 2020, 23:25
Zitat:
__DATE__ und __TIME__
Dieses wird bereits im PE-Header einkompiliert und seit paar Jahren von Delphi sogar an der richtigen Stelle.

Einen echten Preprozessor wie für Makros nötig sind, gibt es leider nicht, k.A. warum sich der Hersteller so dermaßen seit Jahrzehnten so dermaßen dagegen wehrt, bzw. es so penetrant ignoriert.

Im Inlinecompilier kann man versuchen sich reinzuhängen, denn dort verwendet der Compiler auch geänderte Inhalte geladener Dateien, aber spätestens beim DCC war es dass, außer man manipuliert direkt die Quellcodedateien.
Siehe z.B. deine Idee, wobei man da extrem aufpassen muß nichts kaputt zu machen, wenn es mittendrin abkratzt, und die auch nicht __history bzw. ein VCS bis zur Unbenutzbarkeit durcheinander bringt.

Es gibt leider kein Event (mehr), wo man "sicher" Dateiinhalte, ohne zu speichern, zwischen Laden und Compilieren manipulieren kann.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Funktionsname im COde nutzen

  Alt 23. Mär 2020, 06:06
Ich werde für mich jetzt die Namen einfach reinschreiben. Sooo wichtig/dringend ist es für mich nicht. Habe einfach in meinem ErrorMessage-System eine "Location"-String Variable drin, die mir die Position mitteilt. Ist bei einem größeren System mit Error-Klassen sehr hilfreich.
Es gibt aber auch schon fertige Tools für den Zweck, die auch gleich den ganzen Stacktrace loggen und die Fehler auch verschicken können usw., so z.B. Eurekalog oder madExcept.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
236 Beiträge
 
Delphi 12 Athens
 
#14

AW: Funktionsname im COde nutzen

  Alt 23. Mär 2020, 09:18
Ich werde für mich jetzt die Namen einfach reinschreiben. Sooo wichtig/dringend ist es für mich nicht. Habe einfach in meinem ErrorMessage-System eine "Location"-String Variable drin, die mir die Position mitteilt. Ist bei einem größeren System mit Error-Klassen sehr hilfreich.
Es gibt aber auch schon fertige Tools für den Zweck, die auch gleich den ganzen Stacktrace loggen und die Fehler auch verschicken können usw., so z.B. Eurekalog oder madExcept.
Ich habe MadExcept seit über 15 Jahren im Einsatz (Delphi 7 Projekt, von dem ich lebe). Es ist/war ok, aber bei meinem neuen Projekt werde ich solche Tools nicht mehr nutzen. Und in diesem speziellem Fall geht es um eine Fehlermeldung, die von einer REST-API im JSON-Format zurückgegeben werden soll.
Trotzdem Danke
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:52 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