AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Freware: Programm zur Ermittlung von Unit-Abhängigkeiten

Ein Thema von MaBuSE · begonnen am 1. Jun 2006 · letzter Beitrag vom 16. Feb 2007
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von MaBuSE
MaBuSE
Registriert seit: 23. Sep 2002
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
Angehängte Dateien
Dateityp: zip unitscanner_187.zip (1,17 MB, 179x aufgerufen)
Dateityp: zip unitscanner11_119.zip (1,19 MB, 159x aufgerufen)
Dateityp: zip unitscanner11upd_163.zip (252,3 KB, 61x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
 
TBx

 
Delphi 12 Athens
 
#2
  Alt 1. Jun 2006, 16:47
und wo ist das Programm?

Gruß

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Igotcha

 
Delphi 2006 Professional
 
#3
  Alt 1. Jun 2006, 16:57
Zitat von onlinekater:
und wo ist das Programm?


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

Gruß Igotcha
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#4
  Alt 1. Jun 2006, 17:02
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 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
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#5
  Alt 2. Jun 2006, 07:53
Zitat von MaBuSE:
Das hatte ich schon öfter, aber das sollte morgen früh aber wieder gehen
Und was soll ich sagen? Es ging
  Mit Zitat antworten Zitat
EDatabaseError

 
Delphi 2007 Professional
 
#6
  Alt 2. Jun 2006, 08:18
Nette Software. Gefällt mit gut.

Mfg
Tobi
Tobias
  Mit Zitat antworten Zitat
kalmi01
 
#7
  Alt 2. Jun 2006, 08:38
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.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#8
  Alt 2. Jun 2006, 08:45
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} )
  Mit Zitat antworten Zitat
Angel4585

 
Delphi 2010 Professional
 
#9
  Alt 2. Jun 2006, 09:29
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 )
Martin Weber
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#10
  Alt 2. Jun 2006, 09:46
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 19:24 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