Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Units????

  Alt 29. Mai 2007, 13:07
Hi und erstmal herzlich Willkommen in der DP

Was Deine Frage angeht, so muss man hier mehrere Fälle unterscheiden. An sich muss Du immer eine Unit bekannt machen, bevor Du auf ihren Inhalt zugreifen kannst. Dazu wird sie einfach mit der Uses Klausel eingebunden. Erstellst Du ein neues leeres Formular und schaust Dir den Quelltext an, dann findest Du an dieser Stelle schon eine ganze Menge von Units, die aut. eingebunden wird. Die stehen einfach kommagetrennt hinter dem Schlüsselwort Uses.

Findet Delphi im Quelltext (unter Interface oder unter Implementation) eine solche Uses-Klausel, weiß es, dass es die entsprechende Unit hier einbinden soll. Das wiederum heißt, dass Delphi wissen muss, was in dieser Unit steht. Und hier sind wir an dem Punkt, an dem man eben verschiedene Dinge unterscheiden muss. So musst Delphi wissen, wo sich die Unit befindet. Befindet sich die Unit irgendwo (auf einer Festplatte oder gar im Netz) und Delphi müsste suchen, dann kann das bei heutigen Systemen sicherlich ein Weilchen dauern. Deshalb gibt es einen festen Plan, wo Delphi sucht und in welcher Reihenfolge. Der erste Sucherfolg liefert dann einfach die Unit, die verwendet wird. Liegen also mehere Units mit gleichem Namen vor, wird Delphi die erste nehmen, die es findet.

Ja, ganz allgemein hast Du ja schon gesagt, man kann jedem Projekt Units hinzufügen. Hier speichert Delphi den Pfad zu diesen Units ab und weiß wo es suchen soll. Erstellst Du eine neue Unit, während Du ein Projekt geöffnet hast, so sollte diese automatisch für Dich in das Projekt eingefügt werden und Du kannst die Unit direkt benutzen.
Ist die Position nicht direkt bekannt, so muss Delphi suchen. Der erste Ort, an dem i.d.R. gesucht wird (bei Delphi bin ich mir nicht 100%ig sicher) ist eigentlich immer das gleiche Verzeichnis. Liegt eine Unit im gleichen Verzeichnis, wie die Projektdatei, sollt diese Datei automatisch eingebunden werden. Desweiteren gibt es einen festen Suchpfad, den Du in den Optionen angeben kannst (der müsste Bibliothekspfad heißen). In allen Ordnern, die Du hier angibst wird Delphi dann nach Units suchen, die es nicht anders findet.

Möchtest Du nun auf eine fremde Unit zugreifen, die noch nicht im Suchpfad liegt, so hast Du die Möglichkeit, dass Du
  1. Den Suchpfad erweiterst (macht eigentlich nur Sinn, wenn Du diese Unit wirklich häufiger, in verschiedenen Projekten benötigst)
  2. Die Unit dem Projekt hinzufügen
  3. Die Unit ins gleiche Verzeichnis kopieren (was aber schlecht ist, da Du dann viele Kopien hast und Änderungen für jede Kopie übernommen werden müssten)

Gruß Der Unwissende
  Mit Zitat antworten Zitat