AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Komponenten: Einsatz und Veränderung
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten: Einsatz und Veränderung

Ein Thema von Delbor · begonnen am 5. Mai 2015 · letzter Beitrag vom 5. Mai 2015
Antwort Antwort
Delbor

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

Komponenten: Einsatz und Veränderung

  Alt 5. Mai 2015, 12:34
Hi zusammen

In erster Linie geht es hier um ein Verständnisproblem - teilweise versteh ich zwar, was abläuft, aber eben nicht komplett.
Aktuell handelt es sich um TSynedit. Ich hab mir diese Suite schon vor einiger Zeit installiert. Nun soll sie in einem Frame eingesetzt werden, den ich völlig unabhängig zu programmieren gedachte - was er dank Synedit, bzw des zugehörigen Option-Dialogs, nicht mehr ist.

TSynEditOptionsDialog wird wie das Synedit selbst in Delphis Toolbox angeboten, und so hab ich mir das Ding auf einen Frame in einem Testprojekt mit einem Synedit gezogen. Da die benötigte Unit (hier SynEditOptionsDialog) nicht automatisch unter Uses eingetragen wird, hab ich das Ding aus dem Ordner Synedit/Source geöffnet, um den Unitnamen per Copi&Paste im richtigen Uses-Abschnitt einzutragen. Anschliessend habe ich diese Unit im Projektverzeichnis des Testprogrammes gespeichert.
Nun habe ich in der Unit einge wenige Veränderungen angebracht, wie hier beschrieben. Ausserdem habe ich die Form des OptionenDialogs um einige Eingabefelder und den Quelltext um Code, der diese Eingabefelder liest/beschreibt, erweitert.

Und hier kommt der Punkt, an dem meine Verständnisfrage ansetzt.

In einem weiteren Test habe ich nochmal ein Synedit und einen OptionenDialog eingefügt. Auch diesmal habe ich die beiden benötigten Units aus dem selben Source-Verzeichnis (auf den auch Delphis Suchpfad zeigt) geöffnet, allerdings ohne sie im aktuellen Projektverzeichnis zu speichern.
Klar ist, die Änderungen, die ich im erste Testprojekt vorgenommen hatte, sind da nicht vorhanden.
Aber genau da beginnt mein Unverständnis Chaos, da die Synedit-Komponenten in einem bereits kompilierten Package enthalten sind, auch der OptionenDialog - der könnte andernfalls ja gar nicht in der Toolbox angeboten werden.

Viel kürzer ausgedrückt, könnte man das auch so formulieren: mich erstaunt, dass Änderungen, die ich am beiliegenden SourceCode einer bereits kompilierte Komponente vorgenommen habe, überhaupt ausgeführt werden, auch wenn dieser Source komplette (Komponenten-)Klassendefinitionen enthält.

Übrigens - wer lizenzrechtliche Bedenken hat, hier zu schreiben die Synedit-Komponenten stehen unter der Mozilla Public License und der GPL


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 Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponenten: Einsatz und Veränderung

  Alt 5. Mai 2015, 14:09
Würdest Du wirklich erwarten, daß Änderungen am Quellcode zu keinem geänderten Verhalten führen?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
BadenPower

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

AW: Komponenten: Einsatz und Veränderung

  Alt 5. Mai 2015, 14:59
Das reine ändern des Quellcode eines Packages hat keine Auswirkungen, solange das Package nicht neu compiliert/erstellt wurde, also keine aktuellen DCUs vorhanden sind.

Dies sieht man daran, dass im 2. Testprojekt von Delbor die Änderungen nicht vollzogen wurden, da dieses Projekt auf die ursprünglichen DCUs der Komponenten in Suchpfad von Delphi zurückgreift.

Im 1. Testprojekt wurde die geänderte Unit im Projektverzeichnis des Testprogrammes gespeichert und dem Projekt somit expiliziet hinzugefügt. Wird jetzt das Projekt compiliert/erstellt, dann wird eine neue DCU dieser geänderten Unit im Ausgabepfad des Projektes erstellt und dies benutzt.

Auf deutsch: Es bestehen nun zwei DCUs dem gleichen Namen in zwei unterschiedlichen Verzeichnissen und unterschiedlichen Versionen.

Projekt1 benutzt die DCU im Projektverzeichnis und Projekt2 die DCU im Delphi-(Such/Bibliothek-)Pfad.
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.186 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Komponenten: Einsatz und Veränderung

  Alt 5. Mai 2015, 15:55
Hi Sherlock
Danke für deine Antwort!
Zitat:
Würdest Du wirklich erwarten, daß Änderungen am Quellcode zu keinem geänderten Verhalten führen?
Nein, natürlich nicht. Aber die Komponenten, die in der Toolbox wählbar sind, sind ja schon kompiliert - mit dem von mir unveränderten Code.

Ich frage mich, was mich denn dermassen irritiert. Delphi-Komponenten benutze ich nur - deren Quelltexte zu verändern, käme mir aus Lizenzgründen nicht mal im Traum in den Sinn. Würde ich dies tun, würde sich dies offenbar auf Delphi-Komponenten auswirken. Was nichts anderes heisst, als dass jede Komponente jedesmal (wenn der Source geändert wurde), neu kompiliert wird.
So gesehen, beginnt sich die Sache aufzuklären - bis auf den einen Punkt, der besagt, dass ich die SyneditOptionsDialog nicht aus der Toolbox hätte einfügen müssen, sondern nur die entsprechende Unit unter uses hätte einfügen können - das geschieht bei Delphi automatisch, wenn eine Komponennte gesetzt wird, nicht aber bei den Syneditkomponenten . Wobei ich mich allerdings nicht mehr erinnnere, wie das war, als ich die SynHighlighterPas gesetzt habe.

Das wesentliche an der Sache ist: der der SyneditFrame muss gänzlich unabhängig sein, so dass ich nicht erst dutzende Queltextzeilen ändern muss, um ihn zum Laufen zu bringen, sondern lediglich diverse Eventhandlersetzen muss.

Mein Fehler war, dass ich die veränderte Unit im Projektverzeichnis abspeicherte und dadurch den fälschlichen Eindruck hervorrief, der Frame wäre nicht mehr unabhängig. Dazu kommt, dass das Analysieren fremden Codes erstmal nicht unbedingt ein Kinderspiel ist...

@BadenPower:
Auch dir danke für deine Antwort. In der Zwischenzeit habe ich die im ersten Testprojekt gespeicherte Unit aus dem Projekt entfernt, ohne sie jedoch zu löschen. Anschliessend habe ich damit das im Source-Verzeichnis der SynEdits befindliche Original überschrieben. So hatte ich meine Ergänzungen nun auch im 2. Testprojekt zur Verfügung, und gleichzeitig zeigte sich, dass immer noch Einstellmöglichkeiten fehlen (zB. der ursprünglich im OI gesetzte Rand des Gutters, der im 2. Projekt gar nicht gezeichnet wird).


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
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 21:53 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