Frage zur Erstellung eigener Komponenten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Frage zur Erstellung eigener Komponenten

Beitrag von kpmais »

Ich stoße auf folgendes Problem beim Installieren der Komponenten:

Ich nutze in den Komponenten eigene unites, eingebunden in uses.
Diese Units liegen in den jeweiligen Ordnern, in denen alles der Komponente liegt.
Beim Installieren erhalte ich die Message, dass diese Units doppelt/mehrfach vorkommen.
Ist ja auch korrekt.
Was habe ich jetzt für Möglichkeiten?
Muss ich die Units jeweils umbenennen, sodass diese einmalig sind oder besser die units-Klassen in die Komponenten integrieren?
Eigentlich suche ich nach einer Möglichkeit, diese Units aus einem gemeinsamen Pool heraus zu nutzen um die Exe nicht zu sehr auf zu blähen und evtl. mehrfache globale Variablen (wenn vorhanden) ins Feld zu schicken.
Ich bin etwas ratlos ..... :?:

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zur Erstellung eigener Komponenten

Beitrag von fliegermichl »

unbedingt die units umbenennen! Man kann die ja jetzt auch packagename.unitname.pas nennen.

Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Re: Frage zur Erstellung eigener Komponenten

Beitrag von kpmais »

danke für die schnelle Antwort.
Komme ich wohl nicht daran vorbei.
Den Tipp mit den packagenamen kannte ich noch nicht. Gut für die Orientierung. Nochmal danke.

Da werde ich wohl nicht am Umbenennen herum kommen.
Es ist nur ärgerlich, dass ich bei Änderungen an einer solchen Unit dann alle Komponenten, die diese nutzen, jedes mal manuell und einzeln bearbeiten muss, wenn ich jeweils die aktuelle Version für die Komponenten möchte.
Aber dann ist es leider so .....

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Frage zur Erstellung eigener Komponenten

Beitrag von Winni »

Hi!

Für solche Fälle gibt es in der IDE

Suchen --> In Dateien suchen

wobei auch das Ersetzen möglich ist.
Die IDE ist schon komfortable!


Winni

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Frage zur Erstellung eigener Komponenten

Beitrag von wp_xyz »

Bin nicht ganz sicher, aber ich meine, wenn du eine umzubenennende Unit aus der IDE unter anderem Namen speicherst, werden automatisch alle Referenzen auf diese Unit angepasst, zumindest in den geladenen Dateien.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zur Erstellung eigener Komponenten

Beitrag von fliegermichl »

kpmais hat geschrieben:
So 2. Mai 2021, 10:32
Es ist nur ärgerlich, dass ich bei Änderungen an einer solchen Unit dann alle Komponenten, die diese nutzen, jedes mal manuell und einzeln bearbeiten muss, wenn ich jeweils die aktuelle Version für die Komponenten möchte.
Dann erstelle doch ein Unterpackage mit den Units die auch von den anderen Packages benötigt werden. Ein Package kann doch auch andere Packages einbinden.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Frage zur Erstellung eigener Komponenten

Beitrag von charlytango »

kpmais hat geschrieben:
So 2. Mai 2021, 10:32
Es ist nur ärgerlich, dass ich bei Änderungen an einer solchen Unit dann alle Komponenten, die diese nutzen, jedes mal manuell und einzeln bearbeiten muss, wenn ich jeweils die aktuelle Version für die Komponenten möchte.
Hmm.... vielleicht habe ich beim Design irgendetwas falsch verstanden und liege völlig falsch.

Aber vorher sollten wir die Begrifflichkeiten klären:
Was ist eine "Komponente" für dich?
Etwas das in Delphi Komponente heißt und in Lazarus Package ?
(Also ein Codekonstrukt das sich in die IDE integrieren lässt - entweder visuell oder nicht visuell)
Oder eine einzelne Komponente innerhalb eines bestimmten Packages? (zb ein Panel oder ein Datacontrol)
Oder schlicht einen Teil deiner Applikation ?

Wiederverwendung von Code ist ein vielschichtiges Thema und ein Balanceakt. Natürlich hab ich auch Codesammlungen zu bestimmten Themen im Laufe der Zeit angesammelt und setze sie durch Einbindung per Uses auch ein. Trotzdem gibt es immer die Abwägung ob man eine ganze Sammlung mit in die Exe reinnimmt oder nur eine einzelne Hilfsfunktion rein kopiert.

Ich versuche die Abhängigkeiten aus einer Applikation zu (gemeinsam mit anderen Applikationen genutzten) Units möglichst gering zu halten. Klappt nur nicht immer ;)

Packages sollten für mich allerdings eigenständig benutzbare Einheiten sein die nur mit ihrem eigenen Code (außer den üblichen Units aus Lazarus) auskommen.

Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Re: Frage zur Erstellung eigener Komponenten

Beitrag von kpmais »

charly, da hast du natürlich recht.
Seitens der Begriffe ist 'Komponente' schon sehr dehnungsfähig.
Programmierung - oder Lazarus-Programmierung - oder Alltagssprache etc.
In dem Punkt (unter anderem) muss ich mich disziplinieren und eindeutiger sein.
Packages sollten für mich allerdings eigenständig benutzbare Einheiten sein die nur mit ihrem eigenen Code (außer den üblichen Units aus Lazarus) auskommen.
Und damit hast du auch recht, denke ich.
Also brauchts die eigenen Units auch wenn sich dadurch die ausführbare Datei etwas vergrößert.

Danke nochmal an alle.

PascalDragon
Beiträge: 829
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Frage zur Erstellung eigener Komponenten

Beitrag von PascalDragon »

kpmais hat geschrieben:
So 2. Mai 2021, 13:37
Also brauchts die eigenen Units auch wenn sich dadurch die ausführbare Datei etwas vergrößert.
Dank Smartlinking sorgen der Compiler und der Linker dafür, dass nur das in der Binärdatei ist, was auch wirklich verwendet wird. (Hinweis: etwas das über einen initialization oder finalization Bereich verwendet wird, gilt automatisch als verwendet, wenn die Unit vom Hauptprogramm aus über die uses-Abschnitte erreichbar ist)
FPC Compiler Entwickler

Antworten