![]() |
Eigene Uses Unit?!
Moin Moin!
Ich hätte da gerne mal eine Frage! Hab schon ein paar mal gegoogelt finde aber nichts gescheites, was mir weiterhilft. und zwar: Bei delphi ist doch oben immer so eine "Uses" Deklaration! Wie kann ich denn meine eigenen Prozeduren schreiben und mir dann eine eigene Unit einbinden, so dass ich das nur oben
Delphi-Quellcode:
eintragen muss und mir die Funktionene, Prozeduren. . . zur Verfügung stehen?!
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, [b]BenutzerEigene[/b]; Bitte leicht verständliche Anleitung für absolute Vollnoobs :stupid: Danke |
Re: Eigene Uses Unit?!
du erstellst einfach in Delphi eine Unit (kein Projekt), schreibst du gewünschten Funktionen oder Prozeduren hinein, und wenn die Unit in der Uses Liste ist, das kannst du im Hauptprojekt die gewünschten Befehle ausführen
|
Re: Eigene Uses Unit?!
Ganz einfach: die sog. Prototypen Deiner Funktionen und Prozeduren legst Du im interface-Teil Deiner Unit ab. Damit stehen sie anderen Units zur Verfügung.
Delphi-Quellcode:
unit MeineUnit;
interface uses Windows; procedure SagHallo; //Prototyp implementation procedure SagHallo; begin MessageBox(0,'Hallo Welt',nil,0); end; end. |
Re: Eigene Uses Unit?!
hm okay aber wie bekomm ich meine pas in eine dcu?
|
Re: Eigene Uses Unit?!
das mußt du nicht machen ... das macht der Compiler schon automatisch.
|
Re: Eigene Uses Unit?!
Hä? sorry wenn ich mich jetzt so richtig blöd stell, aber wie macht das denn der Compiler automatisch? hä?
also nochmal für ganz dumme :oops:
"Erzeugen/Compilieren" geht im moment nicht . . . die DCU will ich nämlich in den Ordner C:\Delphi\lib rein kopieren, damit die IMMER verfügbar ist :wiejetzt: |
Re: Eigene Uses Unit?!
Kopier die .pas Rein. Oder mach sie einmal in ein Projekt und kompilier, dann hast du eine .dcu, aber die .pas ist für sowas günstiger, wenn sie nicht grade geheim gehalten werden muss.
|
Re: Eigene Uses Unit?!
Zitat:
Die DCR wird nur von "funktioniernden" Units erstellt ... also dann, wenn diese Unit(PAS) kompiliert wurde. Zitat:
|
Re: Eigene Uses Unit?!
Hm ich glaub so langsam kommt was bei mir an :wall:
Naja werd das ganze mal ausprobieren! ein großes DANKÖÖÖ an alle!!! Ich würde mal sagen Frage beantwortet >>> CLOSED <<< |
Re: Eigene Uses Unit?!
Zitat:
und fügst dieses Verzeichnis den Suchpfaden hinzu (siehe Delphi-Umgebungsoptionen). > macht sich für Backups günstiger :zwinker: |
Re: Eigene Uses Unit?!
Das ist vor allem auch dann sehr sinnvoll, wenn man z.B. eine neue Delphi-Version installieren will und alle eigenen Units dort haben will. Wenn man alles in lib haut, muss man erst sorgfältig die eigenen Units von den Borland (äh, Borland/Inprise/Borland/CodeGear/Embarcadero, ach, egal)-Units trennen, um nichts neues zu überschreiben.
|
Re: Eigene Uses Unit?!
Hm sorry aber ich muss mich hier nomma melden :drunken: ich glaub mein Delphi mag mich nicht
Wenn ich's nur mit der unit mache geht's auch aber das problem ist ich möchte eine Procedure zum verschlüsseln machen und somit wäre eine dcu besser als ein bearbeitbares format Also ich hab jetzt mein Programm geschrieben, hab die Unit genauso gemacht, wie oben beschrieben, jetzt allerdings krieg ich jetzt immer die Fehlermeldung, dass Form1 sich überschneidet, also ich denk mal weil ich meiner erstellten dcu ja auch die Rede von einer Form1 ist.
Delphi-Quellcode:
[Fehler] WARNING. Duplicate resource(s):
[Fehler] Type 10 (RCDATA), ID TFORM1: [Fehler] File C:\Programme\Delphi7\Projects\Unit1.dfm resource kept; file c:\programme\delphi7\meine Units\Cryption.dfm resource discarded. Wie bekomme ich denn ein Form aus einer Application heraus? Sorry wenn ich mich jetz mega dumm stell aber ich weiß es nicht bessee :gruebel: [edit] wer richtig schreiben kann is klar im vorteil xD naja gut dass man editieren kann xD [/edit] :coder2: Zitat:
|
Re: Eigene Uses Unit?!
Hä? Ist nicht dein Ernst, oder? :zwinker:
|
Re: Eigene Uses Unit?!
Wieso soll das nicht mein ernst sein? hab ich das Ganze jetzt sooooo kompliziert gemacht?
Wenn's ne einfachere Methode gibt fänd' ich's toll wenn das jemand (für ideoten erklärt) reinstellen könnt |
Re: Eigene Uses Unit?!
1. Erstelle ein Projekt
2. Datei/Neu/Unit 3. Unit bearbeiten und abspeichern 4. Unit in das Projekt über "uses" und dem Unitnamen einbinden 5. Fertig :) [edit] falls du die Unit nicht im Projektpfad abspeicherst, muss du dem Projekt mitteilen, wo er noch nach der Unit suchen soll (Projekt/Optionen/"Verzeichnisse/Bedingungen"/Suchpfad) |
Re: Eigene Uses Unit?!
Auf dem oben beschriebenen Weg bindet man im Normalfall Units mit eigenen Routinen ein, die nichts mit der VCL zu tun haben. Wenn man einfach ein weiteres Formular im Projekt erstellen will, kann man das ganz bequem über das Hauptmenü machen. Ähnlich einfach ist das auch mit Hinzufügen eines bestehenden Formulars zum Projekt. Außerdem zeigt sich wieder einmal, dass man seine Formulare und Komponenten vernünftig benennen sollte, dann sind solche Effekte zumindest unwahrscheinlicher (Form1 könnte es ja öfter geben, frmNeuerBenutzer eher nicht).
|
Re: Eigene Uses Unit?!
ja ne, dann hab ich aber immernoch das Problem, welches ich oben erwähnt habe:
Zitat:
|
Re: Eigene Uses Unit?!
Du hast die Res sowohl manuell wie auch automatisch {$R} eingebunden
|
Re: Eigene Uses Unit?!
Mal kleine Zwischenfrage:
Wenn ich eine eigene Procedure habe, warum muss ich dann für jede Koponente dann extra das Formular davorschreiben? BSP: Normal:
Delphi-Quellcode:
Eigene:
procedure TfrmMain.FormCreate(Sender: TObject);
begin Height := 100; Width := 100; end;
Delphi-Quellcode:
warum geht da nicht einfach:
procedure groesse;
begin Form1.Height := 100; Form1.Width := 100; end;
Delphi-Quellcode:
Bei ner eigenen Unit versteh ich das ja wohl noch.. aber warum geht das nicht, wenn das alles in ein und der selben Unit ist?
procedure groesse;
begin Height := 100; Width := 100; end; |
Re: Eigene Uses Unit?!
Wenn ich nichts übersehen hab, hat noch niemand erwänd das man auch .PAS-Dateien ins Lib-Verzeichnis einfügen kann :!:
Mach ich übrigends auch immer! |
Re: Eigene Uses Unit?!
@BullsEye
Eine Unit ist was anderes als eine Klasse. Deine Prozedur gehört zu keiner Klasse, woher soll sie wissen welche Klasse oder welches Objekt gemeint ist. |
Re: Eigene Uses Unit?!
@BullsEye:
Zitat:
Zitat:
|
Re: Eigene Uses Unit?!
Zitat:
|
Re: Eigene Uses Unit?!
Also meine Unit sieht folgendermaßen aus
Delphi-Quellcode:
Die Unit Speicherst du mit der Dateiendung PAS ab und kopierst diese in dein Projektordner.
{
Versionsnummer und Datum } unit Myunit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry,JPEG,ShlObj, ActiveX, ComObj,shellapi,extctrls,FileCtrl; procedure Test1; //Globale Variablen implementation {****************************************************************************** Informationen } Procedure Test1; Begin End; end. Bei deinem Projekt fügtst du dann bei uses myunit hinzu. Um die Prozedur eins aufzurufen schreibst du dann : myunit.Test1; |
Re: Eigene Uses Unit?!
Zitat:
Delphi-Quellcode:
optional ist und nur verwendet werden muss, wenn verschiene .pas die selben Funktionsnamen enthalten, da im Zweifelsfall die "lokalste" Definition benutzt wird, es ist aber auch nicht falsch es immer zu verwenden und kann der Übersichtlichkeit unter Umständen dienen.
myunit.Test1;
Wenn es sich machen lässt sollte der Übersicht halber bei kleinen Projekten darauf verzichtet werden, Namen in verschiedenen Namespaces doppelt zu verwenden. |
Re: Eigene Uses Unit?!
Zitat:
|
Re: Eigene Uses Unit?!
Für meine Proceduren und Funktionen hatte ich die meisten Uses benötigt. Für einfache Proceduren kann man sicherlich einen großteil weglassen.
|
Re: Eigene Uses Unit?!
Um nochmal auf die Frage von BullsEye zurückzukommen. Das Problem würde ich folgendermaßen lösen:
Delphi-Quellcode:
Einfach den Formularnamen vor den Prozedurnamen schreiben (das T nicht vergessen) und die Prozedur oben bei den Deklarationen hinzuzufügen
type
TForm1 = class(TForm) procedure groesse; ... procedure TForm1.groesse; begin Height := 100; Width := 100; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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