Entwickler-Ecke
Open Source Projekte - Normierungstool
Tranx - So 19.09.10 16:20
Titel: Normierungstool
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
Kha: Topic aus Freeware Projekte verschoben am So 19.09.2010 um 17:54
Hidden - So 19.09.10 16:39
Tranx hat folgendes geschrieben : |
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,
Martok - So 19.09.10 16:49
Hidden hat folgendes geschrieben : |
Bisher hast du ja auch noch keine Binaries angehängt :gruebel: |
Ganz recht, und da die
Regeln [
http://www.delphi-forum.de/topic_Bitte+vor+dem+posten+lesen_7836.html] 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.
jaenicke - So 19.09.10 18:28
Tranx hat folgendes geschrieben : |
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:
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 public end;
var Form255: TForm255;
implementation
{$R *.dfm}
procedure TForm255.FormCreate(Sender: TObject); begin end;
end. |
Nachher:
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 public 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:
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
procedure TNothing.TSomething.SetTest(const Value: string); begin
end;
procedure TNothing.Test2; begin
end; |
Nachher:
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 - 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 - So 19.09.10 19:31
Tranx hat folgendes geschrieben : |
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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!