Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Freware: Programm zur Ermittlung von Unit-Abhängigkeiten (https://www.delphipraxis.net/70610-freware-programm-zur-ermittlung-von-unit-abhaengigkeiten.html)

MaBuSE 1. Jun 2006 15:42


Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo,

ich habe heute mal schnell ein Programm geschrieben, das die Abhängigkeiten der Units in einem Delphi Programm ermittelt und diese dann darstellt.

Das Programm hat 2 Memo Felder.
In dem linken Memo werden alle verwendete Units des Projektes aufgelistet.
Units, die zu Delphi gehören, werden mit einem vorgestellten * gekennzeichnet.
(Die Dateien von Delphi7 im $(DELPHI)\lib Verzeichnis sind in der "DelphiLib.list" Datei aufgelistet, die vom Programm beim Start eingelesen wird.)
Units, zu denen kein Quelltext gefunden wurde, werden mit einem vorgestellten # gekennzeichnet.
In dem rechten Fenster werden die Abhängigkeiten in folgender Form dargestellt:
Code:
"Project1.dpr" -> "Unit1.pas";
"Project1.dpr" -> "Unit2.pas";
"Project1.dpr" -> "Unit3.pas";
"Unit1.pas" -> "Unit2.pas";
"Unit1.pas" -> "Unit3.pas";
"Unit2.pas" -> "Unit1.pas";
Dieses Format kann auch durch Graphvis ( http://www.graphviz.org/ ) in eine Grafik umgewandelt werden.
("dot.exe" und einige von dot.exe benötigte dll's liegen dem unitscanner bei.)



Anleitung zur Nutzung des Programmes:
  • Programm starten
  • scan Button drücken und ein Delphi Projekt auswählen (*.dpr)
  • warten :-)
  • mit dem "call dot" Button kann eine Graphik erzeugt werden, die dann auch angezeigt wird.
Das Programm wurde zu meinem Eigenbedarf geschrieben, aber vieleicht findet es ja noch jemand interesannt ;-)

Da ich vom 06.06.06 bis 07.07. im Urlaub bin, kann ich erst ab 10.07. antworten.

Viel Spaß

ReleaseNotes:
  • v1.0: Erste Version
  • v1.1: Mehrsprachigkeit, Speichern der Optionen in Ini Datei, Suchpfade werden nun Unterstützt

TBx 1. Jun 2006 15:47

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
und wo ist das Programm?

Gruß

onlinekater

Igotcha 1. Jun 2006 15:57

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Zitat:

Zitat von onlinekater
und wo ist das Programm?

:-)

Das Program könnte ich nämlich gut gebrauchen.

Gruß Igotcha

MaBuSE 1. Jun 2006 16:02

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Zitat:

Zitat von onlinekater
und wo ist das Programm?

Programm wird noch hochgeladen.
Ich bekomme leider immer einen Fehler beim Anhängen des Attachments.
Das hatte ich schon öfter, aber das sollte morgen früh aber wieder gehen :-)

Zitat:

Zitat von unsere firewall
Network Error (tcp_error)
A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time


MaBuSE 2. Jun 2006 06:53

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Zitat:

Zitat von MaBuSE
Das hatte ich schon öfter, aber das sollte morgen früh aber wieder gehen :-)

Und was soll ich sagen? Es ging :mrgreen:

EDatabaseError 2. Jun 2006 07:18

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Nette Software. Gefällt mit gut.

Mfg
Tobi

kalmi01 2. Jun 2006 07:38

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Hi MaBuSe,

gefällt mir auch gut.
Wenn ich alle 3 Optionen anhake bekomme ich aber leider nichts angezeigt bei "call dot", das jpeg wird aber erzeugt.
Wenn ich "with no source" ausschalte, ist's OK.
Iss zwar kein Fehler von Deinem Prog, aber vielleicht hilft's.

MaBuSE 2. Jun 2006 07:45

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Zitat:

Zitat von kalmi01
Wenn ich alle 3 Optionen anhake bekomme ich aber leider nichts angezeigt bei "call dot", das jpeg wird aber erzeugt.

Das könnte daran liegen, das das erzeugte jpg sehr groß wird.
(Ein Projekt von mir hatte ca. 100 Units, das jpg war ca 25000 Pixel breit. Die linke obere Ecke ist dann in der Regel weiß :-) )
Versuche mal zu scrollen bzw zu verkleinern.

Es freut mich das das Programm Euch gefällt.
Wenn ich wieder da bin, erweitere ich das Programm noch etwas.
(Es werden im Moment z.B. noch keine include Dateien ausgewertet {$I Datei.inc} )

Angel4585 2. Jun 2006 08:29

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
ich hab jetz au grad alles angehakt wo en Haken dran iss.. des geht ewig mit dem JPEG erstellen... könnte man da nich en Fortschrittsbalken oder so reinmachen, damit man weis ob man schnell en Kaffee trinken gehn kann?(Mein dauert jetzt schon 2 Minuten :? )

MaBuSE 2. Jun 2006 08:46

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Zitat:

Zitat von Angel4585
ich hab jetz au grad alles angehakt wo en Haken dran iss.. des geht ewig mit dem JPEG erstellen... könnte man da nich en Fortschrittsbalken oder so reinmachen, damit man weis ob man schnell en Kaffee trinken gehn kann?(Mein dauert jetzt schon 2 Minuten :? )

Solange die schwarze "Dos-Box" sichtbar ist wird auf jeden Fall das jpg erzeugt.
Falls die weg sein sollte, stimmt was nicht. (evtl ist wegen eines Fehlers kein jpg erzeugt worden.)

Ich habe das ganze in einer schnellen "quick and dirty" Methode geschrieben.
Ich kann nicht ausschliessen, dass noch Fehler enthalten sind.

Einen Fortschrittsbalken kann ich Dir nicht bieten, da ich "nur" ein externes Programm zur Erstellung aufrufe:
Code:
dot -Tjpg -otemp.jpg temp.dot
"temp.dot" enhällt den Inhalt des rechten Memos.
"temp.jpg" wird dann durch "dot.exe" erstellt.

Falls "dot.exe" beendet und die "temp.jpg" nicht erstellt wird, wartet das Programm endlos.
Deshalb habe ich den Cancel Button eingebaut. ;-)

Hier der Quellcode des Buttons:
Delphi-Quellcode:
...
procedure TForm1.btnDotClick(Sender: TObject);
begin
  if Memo2.Lines.Count = 0 then exit;
  btnDot.enabled := false;
  btnCancel.Visible := True;
  if fileexists('temp.jpg') then
  begin
    if not DeleteFile('temp.jpg') then
    begin
      MessageDlg('Can''t delete file "temp.jpg".', mtError, [mbCancel], 0);
      btnDot.Enabled := True;
      btnCancel.Visible := False;
      exit;
    end;
  end;
  StatusBar1.SimpleText := ' save temp dot file';
  Memo2.Lines.SaveToFile('temp.dot');
  StatusBar1.SimpleText := ' create jpg from dot file';
  if not fileexists(StartPath+'dot.exe') then
  begin
    MessageDlg('Can''t find file "'+StartPath+'dot.exe".', mtError, [mbCancel], 0);
    btnDot.Enabled := True;
    btnCancel.Visible := False;
    exit;
  end;
  shellapi.ShellExecute(Form1.Handle, 'open', PChar(StartPath+'dot.exe'),
    '-Tjpg -otemp.jpg temp.dot', '.', SW_SHOWNORMAL);
  StatusBar1.SimpleText := ' wait for jpg file';
  while not (fileexists('temp.jpg') or myTerminate) do
  begin
    Application.ProcessMessages;
  end;
  StatusBar1.SimpleText := ' view jpg file';
  shellapi.ShellExecute(Form1.Handle, 'open', 'temp.jpg', '', '', SW_SHOWNORMAL);
  btnDot.Enabled := True;
  btnCancel.Visible := False;
  StatusBar1.SimpleText := ' finished';
end;
...
procedure TForm1.btnCancelClick(Sender: TObject);
begin
  myTerminate := True;
  btnCancel.Visible := False;
end;
Ich hoffe diese Infos helden Dir.

Ich werde nach meinem Urlaub noch etwas an dem Code formatieren und dokumentieren.
Wenn er dann den Ansprüchen einer Veröffentlichung genügt, werde ich ihn evtl komplett veröffentlichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.
Seite 1 von 5  1 23     Letzte »    

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