Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Historie / Überblick über die verschiedenen Delphi Versionen (https://www.delphipraxis.net/209535-delphi-historie-ueberblick-ueber-die-verschiedenen-delphi-versionen.html)

haentschman 22. Dez 2021 05:42

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zu Delphi 4 gab es wenigstens noch das coole VCL-Poster
...als PDF Version D7. :thumb:

Hängt als A0 im meinem "Büro" in der Firma. :cheer:

MaBuSE 22. Dez 2021 09:37

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

Zitat von haentschman (Beitrag 1499534)
...als PDF Version D7. :thumb:

:shock: Die personal Version war ja wirklich sehr abgespeckt.


Es sollte aber kein Problem sein, einen einfachen "Parser" zu schreiben, der nur die
Delphi-Quellcode:
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 :wink:)

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.
Delphi-Quellcode:
sl.LoadFromFile(Dateiname)
oder
Delphi-Quellcode:
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
Delphi-Quellcode:
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 :thumb:

Viel Spaß.
MaBuSE

dummzeuch 22. Dez 2021 11:25

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

Zitat von MaBuSE (Beitrag 1499546)
Es sollte aber kein Problem sein, einen einfachen "Parser" zu schreiben, der nur die
Delphi-Quellcode:
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.)

MaBuSE 22. Dez 2021 11:37

AW: Delphi Historie / Überblick über die verschiedenen Delphi Versionen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von dummzeuch (Beitrag 1499559)
Es gibt PasDoc, das genau sowas machen kann.

Stimmt, aber spätestens wenn du bestimmte Informationen farbig markieren willst, kommst Du damit nicht hin. :wink:

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.)
Delphi-Quellcode:
TWinRTGenericImportS2O<S1, S2: IInspectable; O: IUnknown> = class(TWinRTGenericImportS2<S1, S2>)
oder
Delphi-Quellcode:
TDispatchSilencer = class(TInterfacedObject, IUnknown, IDispatch)

Delphi.Narium 22. Dez 2021 11:52

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

Zitat von MaBuSE (Beitrag 1499561)
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 ;-)

MaBuSE 22. Dez 2021 11:57

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

Zitat von Delphi.Narium (Beitrag 1499565)
Zitat:

Zitat von MaBuSE (Beitrag 1499561)
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. :stupid:
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/ )

TurboMagic 22. Dez 2021 15:49

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

Zitat von himitsu (Beitrag 1499473)
Zu Delphi 4 gab es wenigstens noch das coole VCL-Poster

Den Klassenbaum gab es auch noch für D7. Den hatte ich mal von jemand aus der IT damals geplottet bekommen gehabt.

MaBuSE 22. Dez 2021 16:07

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

Zitat von TurboMagic (Beitrag 1499587)
Zitat:

Zitat von himitsu (Beitrag 1499473)
Zu Delphi 4 gab es wenigstens noch das coole VCL-Poster

Den Klassenbaum gab es auch noch für D7. Den hatte ich mal von jemand aus der IT damals geplottet bekommen gehabt.

Schau mal 7 _Beiträge weiter oben :roll:
https://www.delphipraxis.net/1499534-post11.html
Da kannst du es Downloaden und ausdrucken.

Frickler 23. Dez 2021 17:53

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

Zitat von himitsu (Beitrag 1499309)
1981-1987 IBM Pascal 1-3
1981-1988 Microsoft Pascal 1-4
1989 Quick Pascal 1

UCSD Pascal, das die "Units" einführte mit "interface" und "implementation". Das gabs im Ur-Pascal nicht.
Später bei Apple weiterentwickelt als "Apple Pascal", und für die grafische Oberfläche von "Lisa" und "Macintosh" verwendet.


P.S.: An der Uni hatten wir Turbo Pascal für CP/M auf 8 Zoll Disketten zur Programmierung einer Kristallzuchtanlage. Die Binaries wurden auf EPROMs gebrannt und in den Zielrechner gesteckt. Debugging? Parameter mit Drehwählern einstellen und schauen, obs klappt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Seite 2 von 2     12   

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