![]() |
Programm strukturierung?
Hi DPler,
Folgende Frage: Ich habe ein Programm, auf dem habe ich ein PageControl und auf jeder dieser Seiten habe ich ein recht komplexes tool eingebaut. Jetzt wenn ich meine Unit1.pas anschaue ist die schon recht lang ---> desshalb auch recht unübersichtlich. Das liegt jetzt nicht daran, weil ich einfach eine sehr unübersichtlicher Programmier stil habe oder so sondern einfach an der Länge. Ich meine ein bestimmtes Buch ist auch einfacher zu finden wenn du nur 10 Bücher vor dir hast als wenn du 90 Bücher vor dir hast :stupid: Also jetzt habe ich irgendwo mal so was gelesen. Kann ich jetzt auch diese verschiedenen kleinen tools in eine eigene unit packen oder so und dann includen?? Meine Form sollte aber immer noch vollständig bleiben! Leider habe ich mit includen oder so noch nicht so viel erfahrung :cry: Ich wäre auch über weitere Tipps zur Übersichtlichkeit sehr dankbar! so vielen dank schonmal ihr könnt mir sicher helfen :thumb: mfg headi |
Re: Programm strukturierung?
Hallo Headi,
{$INCLUDE} benutzt man, wenn man Quelltext an mehreren Stellen verwenden möchte. Mehrfachnutzung zur Laufzeit wird in Delphi vorrangig über Units ermöglicht. Willst du Code programmübergreifend nutzen, dann arbeitest du mit einer DLL. Vermutlich sind Units in deinem geschilderten Fall die richtige Lösung. Wenn es dir auf diese Weise nicht gelingt den Code in übersichtliche Portionen aufzuteilen, dann wirst du deinen Code eventuell etwas überarbeiten müssen. Grüße vom marabu |
Re: Programm strukturierung?
Zitat:
nur wie funktioniert das jetzt? Angenommen ich habe folgenden code:
Delphi-Quellcode:
vielen dank schonmal und nochmal :thumb:
procedure button1
begin alskjdfölakjsadfölj end; procedure button2 begin abcdefghijklmnop... end; mfg headi |
Re: Programm strukturierung?
Hallo Headi,
schau dir mal Frames an... MfG Thorsten |
Re: Programm strukturierung?
Zitat:
Diese Unit gibt es heute im Prinzip auch noch und mit dem Stil von damals hätte sie wohl 200 kB => wären sicherlich mehr als 4 Includes. Heute läuft das Ganze dank OOP völlig anders ab. Eine große Unit enthält zuerst mal alle Ein/Ausgabe-Routinen. Formatierung und einen Haufen virtueller (vorerst leerer) Prozeduren. Diese ist in der Objektablage gespeichert. Egal welche neue Form gebraucht wird, ich leite sie zuerst mal von dieser ab (also inherited). Der ganze grundlegende Ein/Ausgabekram ist somit bereits ohne 1 Zeile neuen Codes erledigt. Die neue Unit enthält vorerst lediglich die Formdeklaration, weiß den Rest aber bereits von der Vorgänger-Form. Der neuen Form werden nun die Sachen hinzugefügt, die sie zusätzlich noch braucht. Gut, PageControl : einfach draufpappen. Noch 20 Edits gefällig ? Drauf damit. Vom Vorgänger wissen sie auch bereits, daß sie bei Zahlen rechts- und sonst linksbündig aussehen sollen. Die Schriftgrößen, Farben, Positionen usw. werden auch im OI möglichst allgemeingültig gehalten. Kann man ja leicht später immer noch abändern. Was ist nun mit den "leeren" Prozeduren ? Beispiel : speichern in DB. Sagen wir mal 5 verschiedene PageControls für 5 Tabellen, die nichts miteinander zu tun haben. Die eingegeben Daten sollen im FormClose abgespeichert werden. Das ist im gemeinsamen Vorgänger bereits grob geregelt. Da steht so was drin :
Delphi-Quellcode:
Richtig : eigentlich nichts ! Das wird nämlich in den Nachfahren erst genauer definiert, weil es dort als override deklariert ist und deshalb erst konkret wird.
procedure TForm1.WertSpeichern; // virtual deklariert
begin end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin WertSpeichern; end; Häufig kommt bei solchen Dingen der Einwand, es sei alles so unterschiedlich und deshalb wäre mit OOP-Mitteln nichts zu machen. Das ist in mind. 85 % der Fälle aber Humbug. Es kann mir keiner erzählen, daß Zahlen,Edits überall anders sein müssen. Also, ich empfehle Dir zuerst mal in der Richtung vorzugehen. Egal, wie der Code momentan aussieht. Es läßt sich mit Sicherheit einiges sinnvoll auslagern. Machst Dus so wie ich, dann kann man das ganze später auch völlig einfach in allen möglichen Projekten wiederverwenden, bzw. durch Änderung an einer einzigen zentralen Stelle für alle Units oder gar Projekte ändern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz