Entwickler-Ecke

Multimedia / Grafik - Unit als Bibliothek


Peter18 - Mo 03.05.10 19:01
Titel: Unit als Bibliothek
Ein freundliches Hallo an alle,

ich möchte die Formular-Units übersichtlich halten und außerdem häufig benutzte Routinen in Units auslagern. Da ich mich bisher in der Entwicklungsumgebung (Delphi4) umgesehen und Prototypen programmiert habe, ist dieses Problem noch nicht aufgetreten. In einem Fall hat es jedoch funktioniert. (Wieso???) :?: Warscheinlich nur eine Kleinigkeit! Diese Units sollen per Uses in anderen verwendet werden, also nicht als .DLL.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
unit Lib;

interface

uses Dialogs;

  procedure Sub1(Immage : TImage; L : TLabel; F : String);
  function Fun1(X :Integer):Integer;

implementation

procedure Sub1(Immage : TImage; L : TLabel; F : String);
..


In so eine Unit sollen die Routinen hinein, die entweder häufig benutzt werden oder aus den Formular-Units ausgelagert werden sollen. Eine solche Unit habe ich schon einmal erstellt und sie funktioniert. Nun wollte ich weitere erstellen, doch in aufrufenden Units sind die Routinen nicht bekannt und die .DCU enthält die Routinennamen auch nicht. Die neuen Units sehen für mich aus, wie die funktionierende. Muß ich ev. einen Schalter setzen oder eine Auweisung einfügen? Vielleicht kann jemand helfen, denn ich habe keinen Hinweis in der Literatur oder dem Forum gefunden.

Allen, die es versuchen meinen Dank im Voraus und
Grüße von der Nordsee
Peter


elundril - Mo 03.05.10 19:25

hast du die unit bei uses hinzugefügt? hast du den Browsing-Path bei Delphi so erweitert das er auch den Pfad enthält wo die unit drin ist?

lg elundril


Peter18 - Mo 03.05.10 23:28

Hallo elundril,

die Unit befindet sich noch im Projektordner, wie die Unit, die funktioniert. Sonst hätte ich ja auch eine Fehlermeldung erhalten. Und die Routinennamen sind auch nicht wie bei der funktionierenden Unit in der .DCU entalten!

Danke und Grüße von der Nordsee
Peter


Xion - Di 04.05.10 00:21

Am besten du packst mal dein Projekt als Anhang hier rein. Wenn du das nicht willst, dann nur die Unit. Dann können wir eventuelle helfen. Es gibt auch die Situation, da verwendet Delphi ne ältere Version der Unit als wirklich vorliegt. Hatte schon das Problem, da hat selbst neu starten nix gebracht. Vielleicht die dcu mal rauslöschen (Delphi erstellt die dcu normal aus der pas).


Peter18 - Di 04.05.10 08:34

Hallo Xion,

der Tipp mit .DCU löschen war gut! Offenbar ist die Unit nicht Übersetzt worden, weil noch Units in Uses fehlten. Dach dem Löschen kamen entspechende Fehlermeldungen. Etwas seltsames Verhalten! Aber wenn man es weiß ....

Also nochmals Danke und
Grüße von der Nordsee
Peter


jaenicke - Mi 05.05.10 07:43

Der Grund ist einfach: Da die Unit nicht in dem Projekt ist wird diese nicht neu erzeugt oder überprüft. Deshalb füge ich solche Units immer dem Projekt hinzu. Dabei linke ich ein Unterverzeichnis mit einer NTFS-Junction auf das Quell-Verzeichnis der Unit / Bibliothek und kann so das Verzeichnis normal packen mit allen Dateien.

Wie das dann aussieht siehst du in dem Bild im Anhang. Ganz unten SJ Config Utils und SJ Updater Utils sind auf die entsprechenden Verzeichnisse oben gemappt. So habe ich diese gemeinsam genutzten Dateien überall zur Verfügung, kann sie in jedes Projekt einfügen, habe aber dennoch keine Verknüpfungen auf andere Verzeichnisse. Denn die würden bei einer Veröffentlichung ja stören.