Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Drucken des Interface-teil aller verwendeten Units (https://www.delphipraxis.net/208365-drucken-des-interface-teil-aller-verwendeten-units.html)

DelTurbo 20. Jul 2021 10:56

Drucken des Interface-teil aller verwendeten Units
 
Hallo,
ich möchte gerne von einem Projekt mit vielen Units nur den interface teil mit und ohne Uses Exportieren oder Drucken. Leider finde ich sowas nicht in der IDE. Gibt es da eventuell ein Tool dem man z.b. das .dpr File gibt und das Tool Exportiert/Druckt mir das? Ich habe zwar schon gesucht, aber sehr wahrscheinlich falsch.

So ungefähr sollte das aussehen.
Code:
Unit: unit1.pas
Procedure Test(s:String);
Function NocheinTest(s:String):Integer

Unit: Unit2.pas
Procedure Poweroff;
Vielen dank im Voraus

stahli 20. Jul 2021 21:14

AW: Drucken des Interface-teil aller verwendeten Units
 
In meinem Optimizer ermittle ich demnächst von einer Unit ausgehend die darin benutzen Units.
Das brauche ich dann für Codevervollständigungen.

Die ermittelten Abschnitte könnte ich recht problemlos in eine Datei speichern.

Wenn Du Interesse hast, dann kann ich sowas mit einbauen und wir müssten uns entsprechend abstimmen.
Würde aber schon noch ein paar Wochen dauern.

Delphi.Narium 21. Jul 2021 09:00

AW: Drucken des Interface-teil aller verwendeten Units
 
Sinngemäß sowas?
Delphi-Quellcode:
program PrintMe;

function GetUnitFileName(sLine : String; sPath : String) : String;
begin
  Result := Copy(sLine,Pos('''',sLine) + 1, Length(sLine));
  Result := Copy(Result,1,Pos('''',Result) - 1);
       if Pos('..',Result) > 0 then Result := sPath + Result
  else if Pos(':' ,Result) = 0 then Result := sPath + Result;
end;

function GetUnitInfo(sUnit : String; sl : TStringList) : Boolean;
var
  slUnit : TStringList;
  i     : Integer;
  s     : String;
begin
  Result := FileExists(sUnit);
  if not Result then exit;
  slUnit := TStringList.Create;
  slUnit.LoadFromFile(sUnit);
  sl.Add(Format('Unit: %s',[ExtractFileName(sUnit)]));
  for i := 0 to slUnit.Count - 1 do begin
    s := Trim(AnsiLowerCase(slUnit[i]));
    if s = 'implementation' then begin
      sl.Add('');
      break;
    end;
    if (Pos('procedure',s) = 1) or (Pos('function',s) = 1) then begin
      s := Trim(slUnit[i]);
      while Pos(' ',s) > 0 do s := AnsiReplaceStr(s,' ',' ');
      sl.Add(s);
    end;
  end;
  slUnit.Free;
end;

var
  i     : Integer;
  sl    : TStringList;
  slDPR : TStringList;
  sDPR  : String;
  sUnit : String;
  sPath : String;
begin
  sl    := TStringList.Create;
  slDPR := TStringList.Create;
  sDPR  := 'e:\Delphi\Projekt1\Projekt1.dpr';
  sPath := ExtractFilePath(sDPR);
  slDPR.LoadFromFile(sDPR);
  for i := 0 to slDPR.Count - 1 do begin
    if Pos(' in ', slDPR[i]) > 0 then begin
      sUnit := GetUnitFileName(slDPR[i],sPath);
      GetUnitInfo(sUnit,sl);
    end;
  end;
  sl.SaveToFile(Format('%s.PrintMe',[sDPR]));
  slDPR.Free;
  sl.Free;
end.
Ist halt nur ein Pascalscript, sollte mit sehr wenig Aufwand in ein Konsolenprogramm übersetzbar sein.

DelTurbo 21. Jul 2021 09:59

AW: Drucken des Interface-teil aller verwendeten Units
 
Hi,
@stahli das ist nett von dir. Leider brauche ich das relativ schnell.
@Delphi.Narium vielen dank für deine Mühe. Ich werde es heute noch ausprobieren.

Nochmal vielen dank an euch

DelTurbo 21. Jul 2021 11:03

AW: Drucken des Interface-teil aller verwendeten Units
 
Liste der Anhänge anzeigen (Anzahl: 1)
Klappt....
Ich habe ein Konsolenprogramm daraus gemacht.

Aufruf mit:
Code:
PrintMe.exe DPRDatei
:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 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