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 3 von 5     123 45      
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, 178x aufgerufen)
Dateityp: zip unitscanner11_119.zip (1,19 MB, 158x aufgerufen)
Dateityp: zip unitscanner11upd_163.zip (252,3 KB, 60x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
 
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#21
  Alt 2. Jun 2006, 12:32
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


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
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#22
  Alt 2. Jun 2006, 13:08
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 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#23
  Alt 2. Jun 2006, 13:23
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

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 )


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:
Uses {$IFDEF UseWindows}Windows,{$ENDIF} FNS_Consts, FNS_Types;
Miniaturansicht angehängter Grafiken
temp_601.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#24
  Alt 2. Jun 2006, 14:03
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
(Benutz mal die Debug Version vom UnitScanner s. Erster Beitrag)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#25
  Alt 2. Jun 2006, 14:07
Wenn ich mir angucke was in der Liste steht, dann schon
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#26
  Alt 2. Jun 2006, 15:30
Zitat von MaBuSE:
Aber warum geht er nicht in die Units rein
Ich weis es, ich weis es,
Ist ein Bug in dem Parsing meines Scanners.

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

Das hatte ich nicht getestet und deswegen funktioniert es auch nicht

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ß
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#27
  Alt 2. Jun 2006, 15:53
Zitat von MaBuSE:
Ich weis es, ich weis es,
Ist ein Bug in dem Parsing meines Scanners.

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


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
(die verschiedenen "KommentarDinger" müssen halt immer einzeln behandelt und in der Abfrage verschachtelt werden)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#28
  Alt 2. Jun 2006, 15:55
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";
}
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#29
  Alt 2. Jun 2006, 15:56
Zitat von himitsu:
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
(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...
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

 
Turbo Delphi für Win32
 
#30
  Alt 2. Jun 2006, 17:05
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
Faux Manuel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 20: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