Delphi-PRAXiS
Seite 1 von 2  1 2      

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.

NicoDE 2. Jun 2006 08:51

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Vorsichtig frag: Gibt's das auch für Packages?

MaBuSE 2. Jun 2006 08:57

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

Zitat von NicoDE
Vorsichtig frag: Gibt's das auch für Packages?

Ich extrahiere im Moment nur die units aus dem uses Bereich.
Für Package müsste ich requires und contains auswerten,
das sollte auch kein großes Problem darstellen.

Das baue ich nach meinem Urlaub ein, das Notebook bleibt zuhause. ;-)

MaBuSE 2. Jun 2006 09:10

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Kleiner Tip am Rande:

Wie oben im Quelltext zu sehen wird das rechte Memo als temp.dot abgespeichert.

Das Memo kann natürlich auch editiert werden ;-)

(Units können gruppiert werden (z.B. nach Packages) einzelne Units können farblich gekennzeichnet werden, oder statt Elipse ein Dreieck, oder ...

Eine Anleitung zur dot Syntax findet Ihr hier:
http://www.graphviz.org/Documentation/dotguide.pdf

Viel Spaß

Gruber_Hans_12345 2. Jun 2006 09:42

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
sieht shcon ganz nett aus

ein kleiner bug ist glaub ich, das du teilweise versuchst das JPEG anzuzeigen, und dieses noch nicht ganz fertig erstellt wurde. Bekomme dann ein "Keine Vorschau verfügbar" wenn ich dann aber ein Bild vorklicke (in dem Dir ist nur das eine Bild drinnen) dann zeigt er mirs richtig an.

was mir noch abgeht :

Das man nen Pfad eingeben kann (oder das prog gleich die Registry von Delphi ausliest) und alle # Sourcen dann in diesem Pfad sucht, damit diese Units dann auch rekursiv durchgearbeitet werden können.
und eventuell Units, die nicht gefunden werden (also nur dpr's sind) gleich mal farblich gekennzeichnet werden.

MaBuSE 2. Jun 2006 09:49

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

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

bzw. ein Update erstellen :-)

Phoenix 2. Jun 2006 10:02

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

Zitat von MaBuSE
Hallo,

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

Erm.. ohne Dein Tool jetzt schlecht machen zu wollen (ich habs mir ehrlich gesagt gar nicht angeguckt), aber ich denke auf der Basis von (Freeware-) ICARUS http://www.peganza.com/ läuft man auch sehr gut.

Zumal ICARUS nicht nur die Uses-List anguckt, sondern auch in die Files abtaucht und Dir z.B. auch sagen kann: "Hör mal, in Formular xyz steht Unit abc in der Uses list drin, aber Du verwendest nichts davon" (die kann also raus).

MaBuSE 2. Jun 2006 10:23

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

Zitat von Phoenix
Zitat:

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

Erm.. ohne Dein Tool jetzt schlecht machen zu wollen (ich habs mir ehrlich gesagt gar nicht angeguckt), aber ich denke auf der Basis von (Freeware-) ICARUS http://www.peganza.com/ läuft man auch sehr gut.
Zumal ICARUS nicht nur die Uses-List anguckt, sondern auch in die Files abtaucht und Dir z.B. auch sagen kann: "Hör mal, in Formular xyz steht Unit abc in der Uses list drin, aber Du verwendest nichts davon" (die kann also raus).

Ich brauchte ein Bild (Grafik) um die Komplexität von Programmen anhand der Unit Abhängigkeiten zu zeigen.
In einem Vortrag z.B. kommen Bilder viel besser als Listen.
Die Bilder geben direkt einen Eindruck von der "vernetzung" der Units untereinander.

Phoenix 2. Jun 2006 10:35

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Ai.. naja, dafür bräuchte man dann den Pascal Analyzer, und der kostet wiederum Geld.. alles klar ;-)

MaBuSE 2. Jun 2006 10:48

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

Zitat von Phoenix
Ai.. naja, dafür bräuchte man dann den Pascal Analyzer, und der kostet wiederum Geld.. alles klar ;-)

Ich kenne den Pascal Analyzer, aber Solche Grafiken habe ich dort noch nicht gesehen.

Folgende Grafik wurde mit UnitScanner erstellt.

(Mit dem Einfügen folgender Zeile werden die Unitnamen ausgeblendet:
Code:
node [label=""]
)


(Bild anklicken um es in voller Größe zu sehen.)

Daniel G 2. Jun 2006 10:53

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Gefällt mir, auch wenn meine Projekte bislang nicht sooooo groß sind. :zwinker:

:shock:
Das zweite Diagramm is' ja mal Ultra....

himitsu 2. Jun 2006 11:32

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
I hab zwar och sowas (in ganz klein) in der Projektverwaltung drin, aber so graphisch isses och ma was anderes.
Aber warum nimmt sich das Programm bei mir nur die DPR und die zugehörige "Forumlar"-Unit (.PAS) vor?

So schön wie bei dem

ist es jedenfalls nicht ... alles geht nur von der DPR und der einen PAS aus :cry:


Die darin verlinkten Dateien sind ja och nochmal untereinander verlinkt und das wollte ich eigentlich sehn und nicht nur das die Dateien eingebunden sind.
Vorallen die kreuzverlinkten Verbindungen wären echt interessant ... also mit Pfeilen dran in welcher Richtung verlinkt ist.


Ach ja, alle Dateien sind in einem Verzeichnis, aber es wäre nicht schlecht, wenn das Programm noch die Suchpfade von Borland zum auffinden der Dateien verwenden würde (natürlich bräuchte man dann wieder 'ne Option, wo man bestimmte Pfade wieder ignoriert ^^


[add]
Ach ja, hab den Fehler entdeckt, warum manchmal kein Bild angezeigt wird.

Das Bild wurde versucht zu laden, bevor die BildDatei fertig war.
hier auf dem rechner wurde es im IE geladen und als ich ein paar Sekunden später F5 bemüht hatte war plötzlich was zu sehn :shock:

MaBuSE 2. Jun 2006 12:08

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

Zitat von himitsu
Aber warum nimmt sich das Programm bei mir nur die DPR und die zugehörige "Forumlar"-Unit (.PAS) vor?
...
Die darin verlinkten Dateien sind ja och nochmal untereinander verlinkt und das wollte ich eigentlich sehn und nicht nur das die Dateien eingebunden sind.
Vorallen die kreuzverlinkten Verbindungen wären echt interessant ... also mit Pfeilen dran in welcher Richtung verlinkt ist.

Wenn die Dateien in verschieden Verzeichnissen stehen, aber in der *.dpr die Pfade angegeben wurden (absolut oder relativ), dann findet der UnitScanner die Dateien.

Werden die Dateien mit einem # gekennzeichnet, so hat er nix gefunden.
Das lässt sich aber leicht beheben, in dem die Pfade in der *.dpr explizit angegeben werden:
Beisp.
Delphi-Quellcode:
program Project1;
...
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'SubDir\Unit2.pas',
  Unit3 in '..\shared\Unit3.pas', {Form3}
  Unit4 in 'c:\temp\test\Unit4.pas' {Form4};
...
(Die Pfadangaben werden dann natürlich im gesammten Projekt verwendet.)

Ansonsten sollte er alle Bezieungen (auch untereinander) anzeigen.
Es werden alle uses bereiche berücksichtigt (interface und implementation)
Das Beispiel im 1. Beitrag (Project1) hat ja auch Abhängigkeiten unter den Units.


Zitat:

Zitat von himitsu
Ach ja, alle Dateien sind in einem Verzeichnis, aber es wäre nicht schlecht, wenn das Programm noch die Suchpfade von Borland zum auffinden der Dateien verwenden würde (natürlich bräuchte man dann wieder 'ne Option, wo man bestimmte Pfade wieder ignoriert

Suchpfade und andere Erweiterungen werden in der nächsten Version kommen.

himitsu 2. Jun 2006 12:23

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also gefunden hat er die ja (angeblich), nur scheint er nicht in den weiteren _Units zu suchen

Code:
* Classes
* Controls
* ExtCtrls
* Forms
* Math
* PSAPI
* StdCtrls
* SysUtils
* Windows
F:\UCC\FNS_Binary.pas
F:\UCC\FNS_Consts.pas
F:\UCC\FNS_Debug.pas
F:\UCC\FNS_Forms.pas
F:\UCC\FNS_Init.pas
F:\UCC\FNS_Languages.pas
F:\UCC\FNS_Log.pas
F:\UCC\FNS_MathB.pas
F:\UCC\FNS_Memory.pas
F:\UCC\FNS_MemoryUT.pas
F:\UCC\FNS_Messages.pas
F:\UCC\FNS_ReInit.pas
F:\UCC\FNS_Security.pas
F:\UCC\FNS_Strings.pas
F:\UCC\FNS_System.pas
F:\UCC\FNS_Thread.pas
F:\UCC\FNS_Types.pas
F:\UCC\FNS_Unicode.pas
F:\UCC\FNS_ValueConvert.pas
F:\UCC\MSC_WinError.pas
F:\UCC\TestU.pas
Code:
DiGraph Uses {
  // dot file created by unit dependency scanner v1.0
  // programmed by MaBuSE, member of [url]www.delphipraxis.net[/url]
  // [url]http://www.delphipraxis.net/topic84612_freware+programm+zur+ermittlung+von+unitabhaengigkeiten.html[/url]
  graph [ratio="0.7"];
  "Test.dpr" [shape=box, style=filled, color=lightgray];
  "Test.dpr" -> "FNS_Init.pas";
  "Test.dpr" -> "FNS_ReInit.pas";
  "Test.dpr" -> "TestU.pas";
  "TestU.pas" -> "FNS_Consts.pas";
  "TestU.pas" -> "FNS_Types.pas";
  "TestU.pas" -> "FNS_Memory.pas";
  "TestU.pas" -> "FNS_System.pas";
  "TestU.pas" -> "FNS_Messages.pas";
  "TestU.pas" -> "FNS_Languages.pas";
  "TestU.pas" -> "FNS_Forms.pas";
  "TestU.pas" -> "FNS_MathB.pas";
  "TestU.pas" -> "FNS_Log.pas";
  "TestU.pas" -> "FNS_Binary.pas";
  "TestU.pas" -> "FNS_Debug.pas";
  "TestU.pas" -> "FNS_MemoryUT.pas";
  "TestU.pas" -> "FNS_Security.pas";
  "TestU.pas" -> "FNS_Strings.pas";
  "TestU.pas" -> "FNS_Unicode.pas";
  "TestU.pas" -> "FNS_ValueConvert.pas";
  "TestU.pas" -> "FNS_Thread.pas";
  "TestU.pas" -> "MSC_WinError.pas";
}
(nur das Häkchen bei delphi lib fehlt)

OK, den einen Pfeil entdeckt hab ... man muß sich das nur in Groß ansehn :roll:

Aber wie gesagt, alle Dateien im selben Verzeichnis und er durchsucht die nicht.
Dafür hab ich aber ein großes Bild mir schönen perfekt geraden Linien (nicht so'n paar krumme Dinger wie bei euch :tongue: )


Ach ja, die test.dot/.jpg ... wenn die schon im Projektverzeichnis landen, dann wäre es eigentlich nett, wenn die wie die getestete Datei heißen (falls es nicht schon eine Datei mit dem Namen gibt)

[add]
QUOTE in CODE geändert (weniger scrollen)

Und dann noch das ... in der TestU.pas steht Folgendes:
Delphi-Quellcode:
Uses Classes, Controls, Forms, StdCtrls, ExtCtrls, Math, PSAPI, Windows, SysUtils,

  FNS_Consts, FNS_Types, FNS_Memory, FNS_System,
  FNS_Messages, FNS_Languages, FNS_Forms,
  FNS_MathB, FNS_Log,

  FNS_Binary{, FNS_Colors{, FNS_DateTime}, FNS_Debug{, FNS_Files{, FNS_Hash{, FNS_Hints}, FNS_MemoryUT{, FNS_MemoryUT2}, FNS_Security, FNS_Strings{, FNS_Sys}, FNS_Unicode{,
  MSC_WinError}, FNS_ValueConvert, FNS_Thread{, FNS_SpeedZip{, FNS_XPStyle}, MSC_WinError;
Und in den (nicht getesteten) anderen Units auch mal sowas:
Delphi-Quellcode:
Uses {$IFDEF UseWindows}Windows,{$ENDIF} FNS_Consts, FNS_Types;

MaBuSE 2. Jun 2006 13:03

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

Zitat von himitsu
...
"TestU.pas" -> "FNS_Consts.pas";
"TestU.pas" -> "FNS_Types.pas";
"TestU.pas" -> "FNS_Memory.pas";
"TestU.pas" -> "FNS_System.pas";
"TestU.pas" -> "FNS_Messages.pas";
"TestU.pas" -> "FNS_Languages.pas";
"TestU.pas" -> "FNS_Forms.pas";
"TestU.pas" -> "FNS_MathB.pas";
"TestU.pas" -> "FNS_Log.pas";
"TestU.pas" -> "FNS_Binary.pas";
"TestU.pas" -> "FNS_Debug.pas";
"TestU.pas" -> "FNS_MemoryUT.pas";
"TestU.pas" -> "FNS_Security.pas";
"TestU.pas" -> "FNS_Strings.pas";
"TestU.pas" -> "FNS_Unicode.pas";
"TestU.pas" -> "FNS_ValueConvert.pas";
"TestU.pas" -> "FNS_Thread.pas";
"TestU.pas" -> "MSC_WinError.pas";
...
in der TestU.pas steht Folgendes:
Delphi-Quellcode:
Uses Classes, Controls, Forms, StdCtrls, ExtCtrls, Math, PSAPI, Windows, SysUtils,

  FNS_Consts, FNS_Types, FNS_Memory, FNS_System,
  FNS_Messages, FNS_Languages, FNS_Forms,
  FNS_MathB, FNS_Log,

  FNS_Binary{, FNS_Colors{, FNS_DateTime}, FNS_Debug{, FNS_Files{, FNS_Hash{, FNS_Hints}, FNS_MemoryUT{, FNS_MemoryUT2}, FNS_Security, FNS_Strings{, FNS_Sys}, FNS_Unicode{,
  MSC_WinError}, FNS_ValueConvert, FNS_Thread{, FNS_SpeedZip{, FNS_XPStyle}, MSC_WinError;

Das wurde korrekt geparst. :-)

Aber warum geht er nicht in die Units rein :gruebel:
(Benutz mal die Debug Version vom UnitScanner s. Erster Beitrag)

himitsu 2. Jun 2006 13:07

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Wenn ich mir angucke was in der Liste steht, dann schon :roll:

MaBuSE 2. Jun 2006 14:30

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

Zitat von MaBuSE
Aber warum geht er nicht in die Units rein :gruebel:

Ich weis es, ich weis es, :bounce1:
Ist ein Bug in dem Parsing meines Scanners. :wall:

Ich verwende in meinen Programmen ausschliesslich { und // als Kommentare.
Du verwendest (* ... *) !

Das hatte ich nicht getestet und deswegen funktioniert es auch nicht :mrgreen:

Ich habe im Editor Suchen/Ersetzen über alle Dateien (* -> { und *) -> } gemacht und dann ging es.

Den Bug fixe ich aber erst nach meinem Urlaub !!!

So, ich stehe nun bis 10.07.2006 nicht mehr zur Verfügung.
Ihr dürft aber weiterhin posten ;-)

Ich werde es dann am 10.07. lesen und beantworten.

Viel Spaß

himitsu 2. Jun 2006 14:53

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

Zitat von MaBuSE
Ich weis es, ich weis es, :bounce1:
Ist ein Bug in dem Parsing meines Scanners. :wall:

Ich verwende in meinen Programmen ausschliesslich { und // als Kommentare.
Du verwendest (* ... *) !

Na dannnn :wall:


Zitat:

Zitat von MaBuSE
Ich habe im Editor Suchen/Ersetzen über alle Dateien (* -> { und *) -> } gemacht und dann ging es.

Aber nicht daß du es dann in dem Programm auch so machst.

Ich hab halt die Kommentare in (* *) und hinter // und dann kommt es mal vor, daß diese dann samt dem QuellCode darum per { } ausgeblendet wird.

Es würde also zu Problemchen kommen, wenn du das da auch nur ersetzt :zwinker:
(die verschiedenen "KommentarDinger" müssen halt immer einzeln behandelt und in der Abfrage verschachtelt werden)

MaBuSE 2. Jun 2006 14:55

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Einen Letzen bevor ich nun Heim geh.

Ihr kennt sicherlich alle folgendes Project1.dpr und Unit1.dpr:
Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Wenn man nun die Unit-Abhänigkeiten der RTL und VCL von Delphi an diesem Beispiel darstellt,
kann man sehen, wie "viel" eigentlich in so einem "leeren" Delphi Projekt drin steckt.
(Und warum die Project1.exe so groß ist und die non-vcl Projekte so klein sind.)


(Bild anklicken um die 1027x768 Version zu sehen)

Mit dem folgendem Dot File kann sich jeder die "große" Version des Diagramms erzeugen:
Code:
dot -Tjpg -oProject1.jpg Project1.dot
oder
Code:
dot -Tpng -oProject1.png Project1.dot
Hier ist die Project1.dot:
Code:
DiGraph Uses {
  // dot file created by unit dependency scanner v1.0
  // programmed by MaBuSE, member of [url]www.delphipraxis.net[/url]
  // [url]http://www.delphipraxis.net/topic84612_freware+programm+zur+ermittlung+von+unitabhaengigkeiten.html[/url]
  graph [ratio="0.7"];
  "Project1.dpr" [shape=box, style=filled, color=lightgray];
  "Project1.dpr" -> "Forms.pas";
  "Project1.dpr" -> "Unit1.pas";
  "Forms.pas" -> "Messages.pas";
  "Forms.pas" -> "Windows.pas";
  "Forms.pas" -> "SysUtils.pas";
  "Forms.pas" -> "Classes.pas";
  "Forms.pas" -> "Graphics.pas";
  "Forms.pas" -> "Menus.pas";
  "Forms.pas" -> "Controls.pas";
  "Forms.pas" -> "Imm.pas";
  "Forms.pas" -> "ActnList.pas";
  "Forms.pas" -> "MultiMon.pas";
  "Forms.pas" -> "HelpIntfs.pas";
  "Forms.pas" -> "Messages.pas";
  "Forms.pas" -> "Windows.pas";
  "Forms.pas" -> "SysUtils.pas";
  "Forms.pas" -> "Classes.pas";
  "Forms.pas" -> "Graphics.pas";
  "Forms.pas" -> "Menus.pas";
  "Forms.pas" -> "Controls.pas";
  "Forms.pas" -> "Imm.pas";
  "Forms.pas" -> "ActnList.pas";
  "Forms.pas" -> "MultiMon.pas";
  "Forms.pas" -> "HelpIntfs.pas";
  "Forms.pas" -> "ActiveX.pas";
  "Forms.pas" -> "Math.pas";
  "Forms.pas" -> "Printers.pas";
  "Forms.pas" -> "Consts.pas";
  "Forms.pas" -> "RTLConsts.pas";
  "Forms.pas" -> "CommCtrl.pas";
  "Forms.pas" -> "FlatSB.pas";
  "Forms.pas" -> "StdActns.pas";
  "Forms.pas" -> "WinHelpViewer.pas";
  "Forms.pas" -> "Themes.pas";
  "Messages.pas" -> "Windows.pas";
  "Windows.pas" -> "Types.pas";
  "SysUtils.pas" -> "Windows.pas";
  "SysUtils.pas" -> "Types.pas";
  "SysUtils.pas" -> "SysConst.pas";
  "Graphics.pas" -> "Windows.pas";
  "Graphics.pas" -> "Windows.pas";
  "Graphics.pas" -> "SysUtils.pas";
  "Graphics.pas" -> "Classes.pas";
  "Graphics.pas" -> "Windows.pas";
  "Graphics.pas" -> "SysUtils.pas";
  "Graphics.pas" -> "Classes.pas";
  "Menus.pas" -> "Windows.pas";
  "Menus.pas" -> "SysUtils.pas";
  "Menus.pas" -> "Classes.pas";
  "Menus.pas" -> "Contnrs.pas";
  "Menus.pas" -> "Messages.pas";
  "Menus.pas" -> "Graphics.pas";
  "Menus.pas" -> "ImgList.pas";
  "Menus.pas" -> "ActnList.pas";
  "Menus.pas" -> "Windows.pas";
  "Menus.pas" -> "SysUtils.pas";
  "Menus.pas" -> "Classes.pas";
  "Menus.pas" -> "Contnrs.pas";
  "Menus.pas" -> "Messages.pas";
  "Menus.pas" -> "Graphics.pas";
  "Menus.pas" -> "ImgList.pas";
  "Menus.pas" -> "ActnList.pas";
  "Menus.pas" -> "Controls.pas";
  "Menus.pas" -> "Forms.pas";
  "Menus.pas" -> "Consts.pas";
  "Menus.pas" -> "Themes.pas";
  "Contnrs.pas" -> "SysUtils.pas";
  "Contnrs.pas" -> "Classes.pas";
  "Contnrs.pas" -> "RTLConsts.pas";
  "Contnrs.pas" -> "Math.pas";
  "Math.pas" -> "SysUtils.pas";
  "Math.pas" -> "Types.pas";
  "ImgList.pas" -> "Windows.pas";
  "ImgList.pas" -> "Classes.pas";
  "ImgList.pas" -> "Graphics.pas";
  "ImgList.pas" -> "CommCtrl.pas";
  "ImgList.pas" -> "SysUtils.pas";
  "ImgList.pas" -> "Consts.pas";
  "ImgList.pas" -> "Forms.pas";
  "ImgList.pas" -> "ActiveX.pas";
  "ActiveX.pas" -> "Messages.pas";
  "ActiveX.pas" -> "Windows.pas";
  "ActiveX.pas" -> "Messages.pas";
  "ActiveX.pas" -> "Types.pas";
  "ActiveX.pas" -> "Windows.pas";
  "ActnList.pas" -> "Classes.pas";
  "ActnList.pas" -> "Messages.pas";
  "ActnList.pas" -> "ImgList.pas";
  "ActnList.pas" -> "Contnrs.pas";
  "ActnList.pas" -> "SysUtils.pas";
  "ActnList.pas" -> "Windows.pas";
  "ActnList.pas" -> "Forms.pas";
  "ActnList.pas" -> "Menus.pas";
  "ActnList.pas" -> "Consts.pas";
  "ActnList.pas" -> "Graphics.pas";
  "ActnList.pas" -> "Controls.pas";
  "Themes.pas" -> "Windows.pas";
  "Themes.pas" -> "Classes.pas";
  "Themes.pas" -> "Messages.pas";
  "Themes.pas" -> "Graphics.pas";
  "Themes.pas" -> "UxTheme.pas";
  "Themes.pas" -> "CommCtrl.pas";
  "Themes.pas" -> "Controls.pas";
  "Themes.pas" -> "SysUtils.pas";
  "Themes.pas" -> "ComCtrls.pas";
  "UxTheme.pas" -> "Windows.pas";
  "UxTheme.pas" -> "CommCtrl.pas";
  "UxTheme.pas" -> "SyncObjs.pas";
  "SyncObjs.pas" -> "Windows.pas";
  "SyncObjs.pas" -> "Messages.pas";
  "SyncObjs.pas" -> "SysUtils.pas";
  "SyncObjs.pas" -> "Classes.pas";
  "ComCtrls.pas" -> "Messages.pas";
  "ComCtrls.pas" -> "Windows.pas";
  "ComCtrls.pas" -> "SysUtils.pas";
  "ComCtrls.pas" -> "CommCtrl.pas";
  "ComCtrls.pas" -> "Classes.pas";
  "ComCtrls.pas" -> "Controls.pas";
  "ComCtrls.pas" -> "Forms.pas";
  "ComCtrls.pas" -> "Menus.pas";
  "ComCtrls.pas" -> "Graphics.pas";
  "ComCtrls.pas" -> "StdCtrls.pas";
  "ComCtrls.pas" -> "RichEdit.pas";
  "ComCtrls.pas" -> "ToolWin.pas";
  "ComCtrls.pas" -> "ImgList.pas";
  "ComCtrls.pas" -> "ExtCtrls.pas";
  "ComCtrls.pas" -> "ListActns.pas";
  "ComCtrls.pas" -> "ShlObj.pas";
  "StdCtrls.pas" -> "Messages.pas";
  "StdCtrls.pas" -> "Windows.pas";
  "StdCtrls.pas" -> "SysUtils.pas";
  "StdCtrls.pas" -> "Classes.pas";
  "StdCtrls.pas" -> "Controls.pas";
  "StdCtrls.pas" -> "Forms.pas";
  "StdCtrls.pas" -> "Menus.pas";
  "StdCtrls.pas" -> "Graphics.pas";
  "StdCtrls.pas" -> "Consts.pas";
  "StdCtrls.pas" -> "RTLConsts.pas";
  "StdCtrls.pas" -> "ActnList.pas";
  "StdCtrls.pas" -> "Themes.pas";
  "RichEdit.pas" -> "Messages.pas";
  "RichEdit.pas" -> "Windows.pas";
  "ToolWin.pas" -> "Windows.pas";
  "ToolWin.pas" -> "Messages.pas";
  "ToolWin.pas" -> "Classes.pas";
  "ToolWin.pas" -> "Controls.pas";
  "ToolWin.pas" -> "Forms.pas";
  "ToolWin.pas" -> "SysUtils.pas";
  "ExtCtrls.pas" -> "Messages.pas";
  "ExtCtrls.pas" -> "Windows.pas";
  "ExtCtrls.pas" -> "SysUtils.pas";
  "ExtCtrls.pas" -> "Classes.pas";
  "ExtCtrls.pas" -> "Controls.pas";
  "ExtCtrls.pas" -> "Forms.pas";
  "ExtCtrls.pas" -> "Menus.pas";
  "ExtCtrls.pas" -> "Graphics.pas";
  "ExtCtrls.pas" -> "StdCtrls.pas";
  "ExtCtrls.pas" -> "Messages.pas";
  "ExtCtrls.pas" -> "Windows.pas";
  "ExtCtrls.pas" -> "SysUtils.pas";
  "ExtCtrls.pas" -> "Classes.pas";
  "ExtCtrls.pas" -> "Controls.pas";
  "ExtCtrls.pas" -> "Forms.pas";
  "ExtCtrls.pas" -> "Menus.pas";
  "ExtCtrls.pas" -> "Graphics.pas";
  "ExtCtrls.pas" -> "StdCtrls.pas";
  "ExtCtrls.pas" -> "Consts.pas";
  "ExtCtrls.pas" -> "Dialogs.pas";
  "ExtCtrls.pas" -> "Themes.pas";
  "Dialogs.pas" -> "Windows.pas";
  "Dialogs.pas" -> "Messages.pas";
  "Dialogs.pas" -> "SysUtils.pas";
  "Dialogs.pas" -> "CommDlg.pas";
  "Dialogs.pas" -> "Printers.pas";
  "Dialogs.pas" -> "Classes.pas";
  "Dialogs.pas" -> "Graphics.pas";
  "Dialogs.pas" -> "Controls.pas";
  "Dialogs.pas" -> "Forms.pas";
  "Dialogs.pas" -> "StdCtrls.pas";
  "Dialogs.pas" -> "Windows.pas";
  "Dialogs.pas" -> "Messages.pas";
  "Dialogs.pas" -> "SysUtils.pas";
  "Dialogs.pas" -> "CommDlg.pas";
  "Dialogs.pas" -> "Printers.pas";
  "Dialogs.pas" -> "Classes.pas";
  "Dialogs.pas" -> "Graphics.pas";
  "Dialogs.pas" -> "Controls.pas";
  "Dialogs.pas" -> "Forms.pas";
  "Dialogs.pas" -> "StdCtrls.pas";
  "Dialogs.pas" -> "ExtCtrls.pas";
  "Dialogs.pas" -> "Consts.pas";
  "Dialogs.pas" -> "Dlgs.pas";
  "Dialogs.pas" -> "Math.pas";
  "CommDlg.pas" -> "Windows.pas";
  "CommDlg.pas" -> "Messages.pas";
  "CommDlg.pas" -> "ShlObj.pas";
  "ShlObj.pas" -> "Windows.pas";
  "ShlObj.pas" -> "ActiveX.pas";
  "ShlObj.pas" -> "CommCtrl.pas";
  "ShlObj.pas" -> "ShellAPI.pas";
  "ShlObj.pas" -> "RegStr.pas";
  "ShlObj.pas" -> "Messages.pas";
  "ShlObj.pas" -> "WinInet.pas";
  "ShlObj.pas" -> "UrlMon.pas";
  "ShellAPI.pas" -> "Windows.pas";
  "WinInet.pas" -> "Windows.pas";
  "UrlMon.pas" -> "Windows.pas";
  "UrlMon.pas" -> "ActiveX.pas";
  "Printers.pas" -> "Windows.pas";
  "Printers.pas" -> "WinSpool.pas";
  "Printers.pas" -> "SysUtils.pas";
  "Printers.pas" -> "Classes.pas";
  "Printers.pas" -> "Graphics.pas";
  "Printers.pas" -> "Forms.pas";
  "Printers.pas" -> "Consts.pas";
  "WinSpool.pas" -> "Windows.pas";
  "ListActns.pas" -> "Classes.pas";
  "ListActns.pas" -> "Controls.pas";
  "ListActns.pas" -> "ActnList.pas";
  "ListActns.pas" -> "ImgList.pas";
  "ListActns.pas" -> "SysUtils.pas";
  "ListActns.pas" -> "ComCtrls.pas";
  "ListActns.pas" -> "Consts.pas";
  "ListActns.pas" -> "RTLConsts.pas";
  "Imm.pas" -> "Windows.pas";
  "HelpIntfs.pas" -> "SysUtils.pas";
  "HelpIntfs.pas" -> "Classes.pas";
  "HelpIntfs.pas" -> "Contnrs.pas";
  "HelpIntfs.pas" -> "Windows.pas";
  "HelpIntfs.pas" -> "RTLConsts.pas";
  "HelpIntfs.pas" -> "Contnrs.pas";
  "HelpIntfs.pas" -> "RTLConsts.pas";
  "FlatSB.pas" -> "Windows.pas";
  "StdActns.pas" -> "SysUtils.pas";
  "StdActns.pas" -> "Classes.pas";
  "StdActns.pas" -> "ActnList.pas";
  "StdActns.pas" -> "StdCtrls.pas";
  "StdActns.pas" -> "Forms.pas";
  "StdActns.pas" -> "Dialogs.pas";
  "StdActns.pas" -> "Windows.pas";
  "StdActns.pas" -> "Messages.pas";
  "StdActns.pas" -> "Consts.pas";
  "StdActns.pas" -> "Clipbrd.pas";
  "StdActns.pas" -> "StrUtils.pas";
  "StdActns.pas" -> "ShellAPI.pas";
  "Clipbrd.pas" -> "Windows.pas";
  "Clipbrd.pas" -> "Messages.pas";
  "Clipbrd.pas" -> "Classes.pas";
  "Clipbrd.pas" -> "Graphics.pas";
  "Clipbrd.pas" -> "Windows.pas";
  "Clipbrd.pas" -> "Messages.pas";
  "Clipbrd.pas" -> "Classes.pas";
  "Clipbrd.pas" -> "Graphics.pas";
  "Clipbrd.pas" -> "SysUtils.pas";
  "Clipbrd.pas" -> "Forms.pas";
  "Clipbrd.pas" -> "Consts.pas";
  "StrUtils.pas" -> "SysUtils.pas";
  "StrUtils.pas" -> "Types.pas";
  "StrUtils.pas" -> "Windows.pas";
  "WinHelpViewer.pas" -> "Classes.pas";
  "WinHelpViewer.pas" -> "HelpIntfs.pas";
  "WinHelpViewer.pas" -> "SysUtils.pas";
  "WinHelpViewer.pas" -> "Windows.pas";
  "WinHelpViewer.pas" -> "HelpIntfs.pas";
  "WinHelpViewer.pas" -> "SysUtils.pas";
  "Unit1.pas" -> "Windows.pas";
  "Unit1.pas" -> "Messages.pas";
  "Unit1.pas" -> "SysUtils.pas";
  "Unit1.pas" -> "Variants.pas";
  "Unit1.pas" -> "Classes.pas";
  "Unit1.pas" -> "Graphics.pas";
  "Unit1.pas" -> "Controls.pas";
  "Unit1.pas" -> "Forms.pas";
  "Unit1.pas" -> "Dialogs.pas";
  "Variants.pas" -> "Types.pas";
  "Variants.pas" -> "SysUtils.pas";
  "Variants.pas" -> "Windows.pas";
  "Variants.pas" -> "SysConst.pas";
  "Variants.pas" -> "VarUtils.pas";
  "VarUtils.pas" -> "SysUtils.pas";
  "VarUtils.pas" -> "Types.pas";
  "VarUtils.pas" -> "SysConst.pas";
  "VarUtils.pas" -> "Windows.pas";
}

MaBuSE 2. Jun 2006 14:56

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

Zitat von himitsu
Zitat:

Zitat von MaBuSE
Ich habe im Editor Suchen/Ersetzen über alle Dateien (* -> { und *) -> } gemacht und dann ging es.

Aber nicht daß du es dann in dem Programm auch so machst.

Ich hab halt die Kommentare in (* *) und hinter // und dann kommt es mal vor, daß diese dann samt dem QuellCode darum per { } ausgeblendet wird.

Es würde also zu Problemchen kommen, wenn du das da auch nur ersetzt :zwinker:
(die verschiedenen "KommentarDinger" müssen halt immer einzeln behandelt und in der Abfrage verschachtelt werden)

Nein im Programm mache ich es dann "richtig".

So und nun tschuess...

faux 2. Jun 2006 16:05

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Ein Vorschlag für die nächste Version:
Auch die selbst definierten globalen Suchpfade durchsuchen, bevor ein # gesetzt wird. ;)
Aber sonst ist es echt klasse, das Programm! :)

Grüße
Faux

himitsu 2. Jun 2006 16:32

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

Zitat von MaBuSE
Wenn man nun die Unit-Abhänigkeiten der RTL und VCL von Delphi an diesem Beispiel darstellt,
kann man sehen, wie "viel" eigentlich in so einem "leeren" Delphi Projekt drin steckt.
(Und warum die Project1.exe so groß ist und die non-vcl Projekte so klein sind.)

Na ja, die Anzahl der Units, die eingebunden werden ist ja nicht so schlimm, aber für veile Dinge in den Units gibt es eine entsprechende InitProzedur im Initialisationsbereich und dieser wird ja auch immer aufgerufen/eingebunden, selbst wenn es garnicht nötig wäre, weil halt nichts davon verwendet wird (davon läßt sich aber die InitProc nicht beeinflussen)

Irgendwo gibt's ja ein kleines TestProg von mir, wo man das auch ganz gut sieht.


[add]
so, da is'es ja ... http://www.delphipraxis.net/internal...=550840#550840


Und "schlimm" is'es ja och noch, weil diese ungenutzten Units/Funktionen auch noch zusätzliche DLLs laden ... nicht daß nur die EXE etwas größer wird, im RAM befindet sich och mehr, als nötig ... mal abgesehn von den zusätzlchen Variablen, Objekten... (noch mehr Speicher halt).

Das mit den Initialisierungsabschnitten kann man och selber mal test ... einfach einige der standardmäßig eingebundenen Units entfernen (es sind ja nicht alle nötig), neu kompilieren (wenn die "wichtigen" Units mit gelöscht sind, geht das sogar noch) und siehe da, die EXE ist kleiner :shock:

Angel4585 7. Jun 2006 15:01

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
Könnte man damit auch Projektgruppen scannen? :gruebel:

himitsu 8. Jun 2006 08:35

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

Zitat von MaBuSE
Es werden im Moment z.B. noch keine include Dateien ausgewertet {$I Datei.inc}

Vergiß nicht ... ich verwende statt
{$I Datei.inc}
ein
{$INCLUDE Datei.inc}
und
{$I+} {$I-}
sind keine Include-Direktiven :zwinker:




Das Nachfolgende bitte ignorieren, wenn Graphvis das nicht kann -.-''

Ist es möglich die Verdungslinien optisch unterschiedlich zu machen?
Je nach dem, wo die Unit eingebunden ist (Interface/Implementation)

Zitat:

Zitat von MaBuSE
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ß

Kann man dem Graphvis nicht sagen wie groß es zeichnen soll?

Es muß ja auch nicht immer alles nebeneinander sein ... 2-3 Zeilig wäre ja och zu ertragen ^^


PS: eigentlich wäre es ja nicht nötig, daß im Threadtitel nochmals "Freeware" drinsteht, aber wenn, dann wäre es keine schlechte Idee, wenn es mit 2 "e" geschrieben würde ... dachte schon einen der Gewinnspielschreibfehler entdeckt zu haben :stupid:

Angel4585 12. Jul 2006 11:49

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates? :firejump:

MaBuSE 12. Jul 2006 13:24

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

Zitat von Angel4585
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates? :firejump:

Nach 5 Wochen Urlaub muß ich erst mal die hier aufgelaufene Arbeit abarbeiten. Danach werde ich mich wieder an den Scanner setzen.

MaBuSE 17. Jul 2006 17:51

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

Zitat von Angel4585
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates? :firejump:

Die Update sind im 1. Post :-)

Folgende Änderungen gibt es:
  • leichte Änderung an der Optik
    (Optionen sind in den Optionen Dialog gewandert)
  • Optionen werden in der ini gespeichert.
  • Mehrsprachigkeit
    Die Sprachen Englisch und Deutsch sind schon in der ini Datei enthalten.
    Es sollte für Euch leicht möglich sein andere Sprachen zu implementieren.
    Wenn Ihr den Scanner in eine andere Sprache übersetzt habt, könnt Ihr mit gerne Eure ini Datei schicken, ich werde es dann allen zur Verfügung stellen.
  • ach ja, es werden nun Suchpfade unterstüzt :mrgreen:

Bitte testet mal ob alles funktioniert.

Danke

ps: Der Bug, das das jpg angezeigt wird, obwohl es noch nicht fertig ist, existiert immer noch. ;-(

MaBuSE 18. Jul 2006 09:09

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

Zitat von Angel4585
So.. jetz bist wieder da hab ich gesehn.. wo bleiben die Updates? :firejump:

Hallo zusammen,

grizzly hat auch ein Programm mit ähnlicher Funktionalizät geschrieben.
Er hat das Programm gestern Aben hier in der DP als Freeware veröffentlicht.
Beitrag: "Unit-Abhängigkeiten visualisieren (mit 40KB screenshot)"

Das Programm sieht auch sehr schön aus.

Da sein UnitUsage auch die GraphVis Tools benutzt, sehen die Ergebnisse sehr ähnlich aus.

Mein Tool werde ich trotzdem weiterentwickeln. ;-)

UnitScanner wird auf jeden Fall noch um diverse Parameter gergänzt um die komplette Funktionalität auch von der Kommandozeile aus nutzen zu können.

Ich habe auch noch ein paar andere Ideen ;-)

MaBuSE 15. Feb 2007 12:25

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

Zitat von MaBuSE
Mein Tool werde ich trotzdem weiterentwickeln. ;-)

Da habe ich den Mund wohl etwas zu voll genommen. Ich hatte (und habe im Moment) leider keine Zeit :-(

-- Projekt eingestellt --

grizzly 15. Feb 2007 13:28

Re: Freware: Programm zur Ermittlung von Unit-Abhängigkeiten
 
[Homer Simpsons Voice] Nein! [\Homer Simpsons Voice]

Das kenn' ich irgendwoher. Ich wollte von meinem Tool ja auch den Sourcecode rausgeben - nach einer kleinen Überarbeitung, versteht sich. Aber der Code entpuppte sich als dermaßen häßlich, daß ich nach etlichen Aufräumaktionen jetzt vor einem nicht funktionierenden Trümmerhaufen stehe. Und Zeit finde ich auch keine.
Da war es immer beruhigend, daß nochmal wer an so einem Tool arbeitet...

Nuja, ein eingestelltes Projekt kann man ja irgendwann mal wiedererwecken - vielleicht ist Dir ja doch noch irgendwann mal langweilig. ;)

Grüße
Michael

MaBuSE 16. Feb 2007 08:32

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

Zitat von grizzly
[Homer Simpsons Voice] Nein! [\Homer Simpsons Voice]
Das kenn' ich irgendwoher. Ich wollte von meinem Tool ja auch den Sourcecode rausgeben - nach einer kleinen Überarbeitung, versteht sich. Aber der Code entpuppte sich als dermaßen häßlich, daß ich nach etlichen Aufräumaktionen jetzt vor einem nicht funktionierenden Trümmerhaufen stehe. Und Zeit finde ich auch keine.
Da war es immer beruhigend, daß nochmal wer an so einem Tool arbeitet...
Nuja, ein eingestelltes Projekt kann man ja irgendwann mal wiedererwecken - vielleicht ist Dir ja doch noch irgendwann mal langweilig. ;)

Das Problem ist, dass ich so viele Ideeen habe, was ich alles programmieren könnte, aber so wenig Zeit. :-(
Da Du aber ja auch noch so ein Projekt hast, habe ich mir keine weiteren Gedanken gemacht ;-)
Im Moment arbeite ich (privat, abends, zuhause) an einer ClearCase Integration für Delphi 2006.
Also eine Schnittstelle zur Versionsverwaltung.

Ich werde das Projekt CC4D definitiv als OpenSource veröffentlichen. Ich achte dann schon beim Programmieren drauf, das es kein Schrott wird. Bei dem Tool zur Ermittlung der Unit Abhängigkeiten habe ich das nicht gemacht. Das ist fürchterlich programmiert. Trotzdem habe ich den Quellcode an jemand weitergegeben. Seit dem redet der nicht mehr mit mir :-( Wenn ich den Code hier in (bzw. für) der Firma produziert hätte, würde ich warscheinlich eine Abmahnung bekommen.

Aus dem cc4d Projekt wird auch ein Tutorial entstehen: "Wie klinke ich mich erfolgreich in die IDE ein" ;-)

Mit folgenden Themen:
  • Grundlagen der OTA
  • Wie komme ich in den Splash Screen von Delphi (leicht)
  • Wie komme ich in den About Dialog von Delphi (leicht)
  • Wie kann man sich in das Menü einklinken (leicht)
  • Wie erzeugt man eine Toolbar (mitel)
  • Wie kann man auf Ereignisse der IDE reagieren (Notifier, mittel)
  • Übersichten, welcher Notifier ist für welches Ereignis
  • ...
Trotzdem bleibt das Unit Abhänigkeiten Projekt beendet.

Wenn ich das Thema noch mal aufgreife, dann mach ich es gleich richtig richtig.
(universeller Parser, der nicht nur Pascal, sondern dann auch C#, ... kann)
Dann wird es aber ein neues Projekt.


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

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