AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Historie / Überblick über die verschiedenen Delphi Versionen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Historie / Überblick über die verschiedenen Delphi Versionen

Ein Thema von MaBuSE · begonnen am 17. Dez 2021 · letzter Beitrag vom 23. Dez 2021
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen

  Alt 22. Dez 2021, 09:37
...als PDF Version D7.
Die personal Version war ja wirklich sehr abgespeckt.


Es sollte aber kein Problem sein, einen einfachen "Parser" zu schreiben, der nur die Txyz = class(Tabc) findet und daraus eine Dot-Datei für Graphvis erstellt.

Da würde ja dieses einfache Format reichen:
Code:
digraph ObjektHierarchie{
   TObject -> Exception
   Exception -> EExternal
   EExternal -> EMathError
   TObject -> TPersistent
   TPersistent -> TCpmonent
}
Der Quellcode ist ja bei den meisten Delphi Versionen dabei.
Die Schwierigkeit wäre dann "nur" alle Objekte zu erkennen.

Farbig markieren könnte man dann z.B. RTL, VCL, FMX oder Class, Interface, ... oder Community, Professional, Enterprise oder ...

Dazu wäre dann ein CSV mit den verschiedenen Informationen hilfreich, aus denen man dann die Dot Dateien erstellen kann.

z.B.
Code:
Vorfahre;Objekt;Lib;Typ;Ver;...
;TObject;RTL;Class;All;...
TObject;Exception;RTL;Error;Class;All;...
Exception;EExternal;RTL;Error;Class;All;...
EExternal;EMathError;RTL;Error;Class;All;...
TObject;TPersistent;VCL;Class;All;...
TPersistent;TCpmonent;VCL;Class;All;...
Das wäre auch ein schönes Projekt für Anfänger oder leicht Fortgeschrittene um den Umgang mit Textdateien zu erlernen.

Die Dateien liegen in "C:\Program Files (x86)\Embarcadero\Studio\21.0\source".
(Statt der 21.0 steht da natürlich die entsprechende IDE Version eures Delphies -> Kann man in der Versionen Listen oben nachlesen )

In der Unit System.IOUtils.pas liegen 3 "Klassen" (Ja, ich weiß es sind Records) mit denen man das Dateihandling relativ einfach hinbekommt. (TDirectory, TPath und TFile)

Zum Parsen kann das File einfach in eine TStringList (Oder TMemo) geladen werden. sl.LoadFromFile(Dateiname) oder TMemo1.Lines.LoadFromFile(Dateiname) .
Dann kann man ganz einfach die die Zeilen zugreifen.
Delphi-Quellcode:
for i := 0 to sl.Count -1 do
begin
  // Zugriff auf Zeile i
  s := sl[i];
  // mach was mit s:string
  ...
end;
Datei Schreiben geht auch analog mit AusgabeMemo.Lines.SaveToFile(AusgabeDateiname); Wenn man davon ausgeht, dass Objektname und "= class ( Vorgänger )" in einer Zeile stehen, könnte man zum Analysieren der Zeilen z.B. alle WhiteSpaces entfernen und mit Pos nach '=class(' suchen.
Wenn gefunden, dann die Zeile genauer analysieren.
Das ist nicht die beste Methode aber von einem Anfänger gut umzusetzen.
Alternativ könnte man auch die Datei (sl.Text) mit RegEx durchsuchen. oder, oder oder ...
Es gibt viele Möglichkeiten. Bis hin zu einem Parser mit "Lex" und "Yacc".

Wenn Du dein Projekt veröffentlichst, erstelle bitte ein neues Thema und verlinke es hier

Viel Spaß.
MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.687 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen

  Alt 22. Dez 2021, 11:25
Es sollte aber kein Problem sein, einen einfachen "Parser" zu schreiben, der nur die Txyz = class(Tabc) findet und daraus eine Dot-Datei für Graphvis erstellt.
Es gibt PasDoc, das genau sowas machen kann.

(Ich überlegen gerade, ob ich das damals selbst eingebaut hatte oder es nur einfach total praktisch fand.)
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen

  Alt 22. Dez 2021, 11:37
Es gibt PasDoc, das genau sowas machen kann.
Stimmt, aber spätestens wenn du bestimmte Informationen farbig markieren willst, kommst Du damit nicht hin.

Ich habe mal eben in der Mittagspause in 15 Min was zusammengebastelt.
Das Programm scannt nur alle *.pas Dateien und gibt alle Zeilen mit "=class(" aus. (Mehr nicht!)

Wie stellt man denn so was in der Grafik dar? (Das gab es zu D7 Zeiten ja teilweise so noch nicht.)
TWinRTGenericImportS2O<S1, S2: IInspectable; O: IUnknown> = class(TWinRTGenericImportS2<S1, S2>) oder
TDispatchSilencer = class(TInterfacedObject, IUnknown, IDispatch)
Angehängte Dateien
Dateityp: zip ClassenDiagrammErstellen-ParsePas.zip (48,6 KB, 7x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)

Geändert von MaBuSE (22. Dez 2021 um 11:51 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen

  Alt 22. Dez 2021, 11:52
Wie stellt man denn so was in der Grafik dar. (Das gab es zu D7 Zeiten ja teilweise so noch nicht.)
Mein erster Ansatz wäre da, dass Ganze in HTML zu gestalten. Das kann man dann ausdrucken und sieht (je nach Umfang) dann wie eine Grafik aus. (Wäre aber vermutlich eine arge Frickelei
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen

  Alt 22. Dez 2021, 11:57
Wie stellt man denn so was in der Grafik dar. (Das gab es zu D7 Zeiten ja teilweise so noch nicht.)
Mein erster Ansatz wäre da, dass Ganze in HTML zu gestalten. Das kann man dann ausdrucken und sieht (je nach Umfang) dann wie eine Grafik aus. (Wäre aber vermutlich eine arge Frickelei
Graphvis kann das schon, aber dann ist es kein einfacher Baum mehr wie auf dem Poster. Man könnte natürlich auch alle interfaces weg lassen. Dann wäre wes wieder ein Baum.
Die Schreibweise von Generics kann man ja auch überlegen/übernehmen.
(z.B. alles in den spitzen Klammern ignorieren, dafür in einer anderen Farbe)

Graphvis kann auch zu den Grafiken map Dateien erstellen, dann kannst Du z.B. jedes Objekt "klickbar" machen. Die Url muss dann natürlich in der dot Datei angegeben werden. (z.B. Link auf Unit)
(siehe http://www.graphviz.org/docs/outputs/imap/ )
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)

Geändert von MaBuSE (22. Dez 2021 um 12:16 Uhr)
  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 11:01 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