AGB  ·  Datenschutz  ·  Impressum  







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

(Formular-)Handling größerer Projekte

Ein Thema von mm1256 · begonnen am 11. Mär 2015 · letzter Beitrag vom 13. Mär 2015
Antwort Antwort
Seite 1 von 2  1 2      
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 14:09
Hi mm1256

Alternativ könntest du die Clientforms, die du zur Laufzeit erstellst, auch in eine (generische?) Objektliste stecken, dann müsstest du nicht alle Komponenten der Anwendung durchlaufen, sondern nur den Listeninhalt. Solltest du eine ältere Delphiversion haben, die noch keine Objectlisten kennt, kannst du auch ein TList-Objekt benutzen und da einen Zeiger ablegen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 14:15
Hi mm1256

Alternativ könntest du die Clientforms, die du zur Laufzeit erstellst, auch in eine (generische?) Objektliste stecken, dann müsstest du nicht alle Komponenten der Anwendung durchlaufen, sondern nur den Listeninhalt. Solltest du eine ältere Delphiversion haben, die noch keine Objectlisten kennt, kannst du auch ein TList-Objekt benutzen und da einen Zeiger ablegen.

Gruss
Delbor
Dafür nimmt man Delphi-Referenz durchsuchenSystem.Contnrs.TComponentList, denn dafür wurde die gebaut
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 14:15
Hi mm1256

Alternativ könntest du die Clientforms, die du zur Laufzeit erstellst, auch in eine (generische?) Objektliste stecken, dann müsstest du nicht alle Komponenten der Anwendung durchlaufen.....
Danke für den Tipp. Application.ComponentCount hab ich natürlich vorher mal getestet, weil, Performance möchte ich nach Möglichkeit nicht verschenken. Auch wenn's nur Kleinigkeiten sind. Es scheint so zu sein, dass Application.ComponentCount nur die Anzahl der aktiven Fenster beinhaltet. Weil ich diese ja immer wieder freigebe, wenn sie nicht mehr gebraucht werden, dürfte Application.ComponentCount i.d.R. nicht viel größer als 10 sein. Ich denke, das ist also keine Spassbremse

EDIT

Dafür nimmt man Delphi-Referenz durchsuchenSystem.Contnrs.TComponentList, denn dafür wurde die gebaut
Geil, was ihr so alles wisst. Das kannte ich noch gar nicht.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen

Geändert von mm1256 (12. Mär 2015 um 14:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 14:20
Es scheint so zu sein, dass Application.ComponentCount nur die Anzahl der aktiven Fenster beinhaltet.
Wenn du Application als Owner nur den Formularen gibst, was soll da auch sonst noch drin sein?

Dort ist das drin, was du da rein steckst:
Delphi-Quellcode:
program foo;

...

begin
  Application.Initialize;
  Application.CreateForm( TFooForm, FooForm ); // <- Da, wird Owner
  Application.Run;
end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 14:28
Wenn du Application als Owner nur den Formularen gibst, was soll da auch sonst noch drin sein?
Ooooops....stimmt. Eigentlich logisch. Danke für die Erklärung.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 14:27
dann müsstest du nicht alle Komponenten der Anwendung durchlaufen,
Über wieviele Millisekunden reden wir hier?

Du gehst ja nicht alle Komponenten der Anwendung durch, sondern wie Sir Rufo schon richtig angemerkt hat, nur die Komponenten deren Owner "Application" ist.
Und dies sind eben meistens nur die Formulare.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 16:42
Hi zusammen
dann müsstest du nicht alle Komponenten der Anwendung durchlaufen,
Über wieviele Millisekunden reden wir hier?

Du gehst ja nicht alle Komponenten der Anwendung durch, sondern wie Sir Rufo schon richtig angemerkt hat, nur die Komponenten deren Owner "Application" ist.
Und dies sind eben meistens nur die Formulare.
Daran hab ich erstmal nicht gedacht - mein wirklich 'rotes Tuch' ist denn auch zum Bleistift Findcomponent, das die kompletten Komponenten eines Containers durchläuft. Wenn dieser eine Form ist, kann das recht happig werden, wenn jede Komponente so identifiziert werden soll...


Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 17:27
Daran hab ich erstmal nicht gedacht - mein wirklich 'rotes Tuch' ist denn auch zum Bleistift Findcomponent, das die kompletten Komponenten eines Containers durchläuft.....
Genauso oder zumindest so ähnlich hab ich gedacht, als ich das Beispiel von BadenPower zum ersten mal gelesen habe. Daraufhin meine größte dpr mit den schon zitierten 100+ Formularen aufgemacht, ein paar Fenster geöffnet und dann mal gecheckt, wie hoch Application.ComponentCount ist. Nach SirRufo's Kommentar ist mir dann auch schnell klar geworden, warum das so niedrig ist. Wenn man in der dpr nur ein einziges Formular (das Hauptformular) erzeugt, dann ist das wirklich eine prima Sache, und das von dir zitierte "rote Tuch" ist dann flugs samt den Vorurteilen verschwunden.

Was mich abschließend mal zu dem Kommentar verleitet: Man findet im WEB tausende von Tutorials über wie und was und überhaupt...aber wenn es mal um den Feinschliff größerer Projekte geht, wird es ganz schnell eng. Nur gut, dass es die DP gibt
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Hansa

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

AW: (Formular-)Handling größerer Projekte

  Alt 12. Mär 2015, 20:30
Bei grösseren Projekten machst Du folgendes: du baust ein Form mit vorgefertigtem caFree im OnClose. Dieses schiebst du in die Objektablage. Ab dann nur noch dieses Formulur vererben,d.h. das caFree ist standardmässig schon da und fertig. Release, free etc. wird dann nicht benötigt. Zumindest nicht bei meinem Programm mit ca, 200 Forms.
Gruß
Hansa
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: (Formular-)Handling größerer Projekte

  Alt 13. Mär 2015, 06:35
Bei grösseren Projekten machst Du folgendes: du baust ein Form mit vorgefertigtem caFree im OnClose.....
Das ist ja eigentlich bei größeren Projekten eine Selbstverständlichkeit. ABER: "ein Form" reicht in der Praxis nicht. Ich hab 14 MDI-Fenster in 6 Programmodulen die alle ihre grundlegenden Eigenschaften von einem Vorfahren erben. Das Selbe bei den etwa 40 modalen Dialogen, die eine Interaktion des Users erwarten, den etwa 10 Dialogen welche den Ausdruck steuern (Druck-Voreinstellungen), den etwa 50 modalen Fenstern die programmspezifische Funktionen ausführen (es geht um ein WWS).....und so weiter.

Ich hab soeben mal die Fenster zusammengezählt: 14 MDI, 27 Hauptformulare, 86 modale Dialoge, 121 Formulare mit Hilfsroutinen und dergleichen (Dateisuche, Dateien zippen, Fortschrittanzeigen, Fileviewer, Datenbank-Tools, Rechner, Scanner, Bilderanzeige...). Da sieht man erst, was sich im Lauf der Jahre in einem einzigen Projekt alles ansammelt. Die Vererbung von Formulareigenschaften (welche ja durch die Delphi-IDE wunderbar unterstützt wird) macht man sich da zwangsweise zu Nutzen. Anders geht es ja auch gar nicht. Es sei denn, man legt Wert darauf, dass das Installationsprogramm nicht mehr auf eine CD passt, nur mehr auf DVD.

Ein Beispiel für die Vererbung aus zwei unterschiedlichen Programmteilen habe ich (falls es jemand interessiert) angehängt. Der Linke ist ein Dialog im Hauptprogramm zur Datensicherung und der Rechte der Startdialog für mein Installationsprogramm (natürlich selber programmiert). Also zwei sehr unterschiedliche Bereiche. Der neue Kunde soll bereits bei der Installation auf die Programmoptik vorbereitet werden und derjenige der ein Update installiert, erkennt auf den ersten Blick um was es geht.

Der praktische Effekt: der Anwender hat in vielen Bereichen eine einheitliche Oberfläche. Der technische Aspekt: Es werden viele Ressourcen eingespart. Das bringt mich aber zurück zu einer der Ausgangsfragen:

1) Gibt es hinsichtlich einer optimalen Exe-Größe bei der Include-Datei noch Optimierungsmöglichkeiten?
Hierzu hat sich noch niemand geäußert...kann ich daraus ableiten, dass hier nichts mehr zu machen ist? Mir geht es weniger um den Platzbedarf der kompletten Installation sondern um die Größe des Download-Image. Die möchte ich so klein wie möglich halten und da sind die Exe-Größen schon mit ausschlaggebend.
Angehängte Grafiken
Dateityp: jpg Screenshot.jpg (105,1 KB, 23x aufgerufen)
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:57 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