AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm strukturierung?

Ein Thema von Headi · begonnen am 10. Mär 2006 · letzter Beitrag vom 10. Mär 2006
Antwort Antwort
Headi

Registriert seit: 17. Nov 2005
Ort: Weinfelden
101 Beiträge
 
Delphi 2007 Professional
 
#1

Programm strukturierung?

  Alt 10. Mär 2006, 20:33
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

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

Ich wäre auch über weitere Tipps zur Übersichtlichkeit sehr dankbar!


so vielen dank schonmal

ihr könnt mir sicher helfen

mfg headi
Pascal
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Programm strukturierung?

  Alt 10. Mär 2006, 20:47
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
  Mit Zitat antworten Zitat
Headi

Registriert seit: 17. Nov 2005
Ort: Weinfelden
101 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Programm strukturierung?

  Alt 10. Mär 2006, 21:05
Zitat von marabu:
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
Hi vielen dank für die erklärung
nur wie funktioniert das jetzt?

Angenommen ich habe folgenden code:

Delphi-Quellcode:
procedure button1
begin
alskjdfölakjsadfölj
end;


procedure button2
begin
abcdefghijklmnop...
end;
vielen dank schonmal und nochmal

mfg headi
Pascal
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Programm strukturierung?

  Alt 10. Mär 2006, 21:10
Hallo Headi,

schau dir mal Frames an...

MfG
Thorsten
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Programm strukturierung?

  Alt 10. Mär 2006, 22:12
Zitat von Headi:
Ich wäre auch über weitere Tipps zur Übersichtlichkeit sehr dankbar!
Zuerst zu Include-files : besser Finger weg ! Selbst, wenn der Code wiederverwendet werden muß, warum dann mehrmals als Include ein und dasselbe mehrfach speichern und letztenendes die EXE aufblähen ? Wie bereits gesagt : dafür hat man Units. Bei mir gabs bisher eine Ausnahme (zu BP7 Zeiten) : eine Unit war > 64 kB (damals maximale Editor-Größe !) und es gelang mir nicht recht, diese sinnvoll in Units aufzuspalten. 8) Kurzerhand habe ich die gröte Prozedur aus der Unit ausgelagert und per Include als 1 Zeile trotzdem drin gehabt. Nachteil : bei Änderungen 2 Quelltexte im Auge behalten. Wegen der Dateigröße Includes zu verwenden ist heutzutage natürlich Schwaschsinn.

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:
procedure TForm1.WertSpeichern; // virtual deklariert
begin
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WertSpeichern;
end;
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.

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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:32 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