Autor Beitrag
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: So 19.09.10 16:20 
Hallo Leute,

ich arbeite gerade an einem Tool, welches Delphi-Quelltexte normiert.

Normierung bedeutet:

- Einrückung je Ebene um 2 Leerzeichen
- Einrückung bei:
- uses + 1 Ebene bis zum nächsten ;
- var + 1 Ebene bis zum nächsten nicht-Einrückwort
dito const, type
- class + 1 Ebene bis end;
dito record
- begin + 1 Ebene bis end;
- end; - 1 Ebene
- for .. to + 1 Ebene falls nicht mit begin die Schleife beginnt, bis
nächstes Semnikolon
dito while .. do, if .. then .. else,
- try .. except .. end und try .. finally .. end

- Aufsplittung in 2 Zeilen von
- then begin
- do begin
- to .. begin

- Markierung der end; mit dem jeweilgen Einrückungs-Beginwort:
if, while, record, class, procedure, function, case ...

- Kleinschreibung der wichtigsten reservierten Delphi-Worte
z.B. procedure, function, begin, end ...

- Kommentarblock vor procedure und function mit Namen und - bei function - Rückgabewert

Das ganze habe ich mit DELPHI Vers. 5 erstellt. Ich hoffe, das klappt auch bei höheren Versionen. Entschuldigt, aber ich habe nicht so viel Geld, um mir neuere Versionen leisten zu können.

Ich bin noch in der Entwurfsphase. Hier eine beta-Version. Bisher funktioniert es schon ganz gut, aber hat so seine Schwächen bei komplizierten Strukturen (u.a. Case).

Falls Ihr schon Anregungen dazu habt, auch wenn ich was Wichtiges vergessen habe, sagt es mir, damit ich daran arbeiten kann, dies umzusetzen.

Vorab aber schon mal die Frage, ob dies überhaupt jemanden interessieren würde. Konstenlos zu Verfügung, versteht sich von selber. Quelltexte und Formulare anbei.


Moderiert von user profile iconKha: Topic aus Freeware Projekte verschoben am So 19.09.2010 um 17:54
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Tranx am Mo 20.09.10 07:34, insgesamt 5-mal bearbeitet
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 19.09.10 16:39 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
ich muss - bevor ich das tue - dieses Programm mit besonders komplizierten Quelltexten testen.
Da kannst ja einmal die Units rund um Delphi und die vcl austesten, und dir die Unterschiede von Delphi selbst(neuere Versionen haben Code-History) oder einem anderen Editor anzeigen lassen :)

Bisher hast du ja auch noch keine Binaries angehängt :gruebel:

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 19.09.10 16:49 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Bisher hast du ja auch noch keine Binaries angehängt :gruebel:

Ganz recht, und da die Regeln keine "hier kommt später was"-Topics mögen, ist hier bis auf weiteres gesperrt.
Diskussionen zu Ideen bitte im normalen Foren-Bereich, hier dürfte wohl "Programmierwerkzeuge" angebracht sein.


Ist das Programm dann fertig (bzw mindestens eine Version zum freigeben da), wende dich bitte an den "virtuellen Ansprechpartner", indem du dieses "Thema meldest". Dann wird das Thema wieder geöffnet.

Persönliche Meinung: veröffentliche es einfach, und schreibe groß dran dass es noch Probleme haben kann. Wir sind hier einiges gewöhnt :lol:

cu,
Martok

//EDIT: Nach kurzer Unterredung geklärt und wieder offen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 19.09.10 18:28 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Vorab aber schon mal die Frage, ob dies überhaupt jemanden interessieren würde.
Solche Tools nennen sich Code Formatter. Seit Delphi 2010 wird auch bereits einer in Delphi integriert mitgeliefert.

Zudem gibt es sehr umfangreiche wie den JEDI Code Formatter kostenlos.

Leider macht dein Tool nicht gerade etwas Sinnvolles und das schon bei Standardquelltexten (einfaches neues Projekt mit FormCreate). Vorher:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
unit Unit255;

interface

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

type
  TForm255 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form255: TForm255;

implementation

{$R *.dfm}

procedure TForm255.FormCreate(Sender: TObject);
begin
  //
end;

end.
Nachher:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
unit Unit255;

interface

uses
  Windows, Messages, SysUtils, variants, classes, Graphics, Controls, Forms,
Dialogs;

type
  TForm255 = class(TForm)
  procedure FormCreate(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;
:shock:

Mit neueren Konstrukten kommt dein Tool auch nicht klar, aber das hatte ich auch nicht gerade erwartet. Das Interface ist allerdings noch normal. ;-) Vorher:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
unit Test;

interface

type
  ITest = interface
  
  end;

  TNothing = class(TInterfacedObject, ITest)
  private
    type
      TSomething = class
      strict private
        FTest: string;
        procedure SetTest(const Value: string);
      public
        property Test: string read FTest write SetTest;
      end;
    const
      A = 'B';
  public
    procedure Test2;
  end;

  
implementation

{ TNothing.TSomething }

procedure TNothing.TSomething.SetTest(const Value: string);
begin

end;

{ TNothing }

procedure TNothing.Test2;
begin

end;
Nachher:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
type
  ITest = interface
  
end;

TNothing = class(Tinterfacedobject, ITest)
private
type
    TSomething = class
    strict private
    FTest: string;
  procedure SetTest(const Value: string);
public
  property Test: string read FTest write SetTest;
end;
const
A = 'B';
public
procedure Test2;
end;

...
Ja, dann wird das Programm nicht richtig dargestellt, der Speichern-Knopf ist außerhalb des sichtbaren Bereichs des Formulars.
Tranx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: So 19.09.10 18:55 
Gut, ich arbeite daran. Sehe, dass es doch noch mehr als die von mir geschilderten Probleme gibt.

Zu Deiner Anmerkung bezüglich Code-Formatter von Delphi 2010:

ich besitze diese Version nicht, daher habe ich mit meiner Version nicht diese Möglichkeit (Delphi 5). Und mir Delphi 2010 zu kaufen, dazu fehlt mir das Geld. Entschuldige also meine fehlerhaften Ansätze. Sicher ist es notwendig, noch weitere Verbesserungen, Fehlerausmerzungen vorzunehmen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 19.09.10 19:31 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Und mir Delphi 2010 zu kaufen, dazu fehlt mir das Geld. Entschuldige also meine fehlerhaften Ansätze.
Ich sagte ja auch, dass ich das nicht erwartet hatte, dass es das kann. ;-)

Nebenbei gibt es das auch schon seit Delphi 2006. Aber da bist du leider noch nicht lange genug dabei, das (Turbo Delphi) gab es bis letztes Jahr kostenlos. ;-)

Du kannst dir ja einfach die größeren Tools dazu anschauen, der von JEDI ist ja wie gesagt z.B. kostenlos (und Open Source). Da bekommst du vielleicht ja noch Ideen.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 19.09.10 19:40 
Und ansonsten gibts ja noch den wunderbaren DelForExp, dessen Homepage ich grade vermisse :shock:

Google sagt, es ist nicht mehr diese sondern diese. Oder für neuere Delphis das Ganze in den GExperts.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."