AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Klassen verwalten, wie macht ihr das? Was ist sinnvoll?
Thema durchsuchen
Ansicht
Themen-Optionen

Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

Ein Thema von BAMatze · begonnen am 25. Mai 2009 · letzter Beitrag vom 23. Jun 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.357 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 10:50
Zitat von BAMatze:
@jaenicke: Also das hört sich ziemlich gut schonmal an, kannte ich so noch nicht. Wie verwaltest du deine einzelnen Quellcode dann ansich? Hast du sie einzeln in Pas-Dateien gelagert?
Ich habe zum einen Bibliotheksunits, die tatsächlich nur viele Funktionen beinhalten, z.B. zum Suchen von Dateien und Ordnern in einem Ordner und so etwas.

Und dann habe ich auch Units mit Klassen zur Kapselung von Objekten wo das sinnvoller ist. Und bei dem Projekt mit den Einstellungen sind es natürlich auch Klassen, die abgeleitet und verwendet werden. (Dieses Projekt stelle ich gerade zur Veröffentlichung fertig.)

Zitat von BAMatze:
würde hier eine DLL oder so Sinn machen? Die scheinen ja so ähnlich zu funktionieren, wie die Header-Dateien in C/C++
Headerdateien geben an welche Funktionen usw. in einer DLL oder C-Datei drin sind. Si etwas gibt es in Delphi nicht. Da muss man normale Units zur Einbindung von DLLs benutzen.

Die Einbindung von DLLs ist grundsätzlich nicht schlecht, aber langsamer als die direkte native Einbindung. Zudem müsstest du die DLLs auch ständig mitliefern...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#12

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 10:51
Zitat von BAMatze:
@all: auch wenn die Frage vieleicht etwas komisch klingt, aber da ich mich noch nicht so damit beschäfftigt habe, außer vorhandene zu verwenden, würde hier eine DLL oder so Sinn machen? Die scheinen ja so ähnlich zu funktionieren, wie die Header-Dateien in C/C++ und da ich dort mal Info-Unterricht drin hatte, weiß ich unser Lehrer hat für sich eigene Header-Dateien geschrieben, wo viele Funktionen drin lagen, die er häufig verwendet hat.
Kommt drauf an. Funktionieren würde das schon.

Das Problem ist eher, dass Du dann a) diese DLL immer mit ausliefern muss und b) Du dennoch für jedes Projekt was diese DLL nutzt die Funktionen aus der DLL importieren musst (in aller Regel Durch eine Unit, die diese Funktionen anderen Units zur Verfügung stellt).

Das heisst, für Deinen Entwicklungsaufwand ändert sich nichts. Du musst dennoch die benötigten Funktionen in einer .pas-Datei in alle Projekte einbinden. Nur wenn Du diese Funktionen änderst / korrigierst reicht es dann aus, die DLL auszutauschen und Du musst Deine Projekte nicht alle neu erstellen.

Wenn Du das nicht benötigst, dann kannst Du die Funktionen genausogut gleich direkt in Deine Projekte einkompilieren lassen - indem Du diese Unit direkt einbindest.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 10:56
C/C++ Header-Dateien und DLLs sind absolut unterschiedliche Konzepte aus unterschiedlichen Bereichen. DLLs enthalten kompilierte Funktionen die alleine nicht lauffähig sind, aber von Prozessen geladen und genutzt werden kann.

Header-Dateien sind nur die Schnittstelle zu den Quellcodedateien. In ihnen befinden sich nur die Funktionsdeklarationen.

Sammelst du deine Funktionen in DLLs handelst du dir nur ünnötige Probleme ein: Übergabe von Strings ist problematisch sowie die übergabe von Objecten und der Gleichen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 11:05
Zitat von Tyrael Y.:
Es geht um reine Prozeduren und Funktionen, die du künstlich in Klassen integrierst?
Es handelt sich teilweise um kleine einfache Proceduren und Funktionen. Ich geb mal hier ein kleine Beispiele das ich derzeit in einer Pas-Datei (Hilfsfunktionen.Pas) habe. Habe die derzeit jeweils als eine Class behandelt. Dann wisst ihr zumindest, was ich meine.

Hier das erste Beispiel:
Delphi-Quellcode:
Type TDLL_Datei = class
  private
    bDLL_vorhanden: boolean;
    sDLLName: string;
    hDLLHandle: THandle;
    function DLL_vorhanden: boolean;
  public
    constructor create(const sDateiName: string); reintroduce;
    destructor Destroy; override;
    property Vorhanden: boolean read bDLL_vorhanden;
    property Handle: THandle read hDLLHandle;
end;

implementation

constructor TDLL_Datei.Create(const sDateiName: string);
begin
  inherited create;
  sDLLName := sDateiName;
  bDLL_vorhanden := DLL_vorhanden;
end;

function TDLL_Datei.DLL_vorhanden: boolean;
var DLL_Handle: THandle;
begin
  try
    DLL_Handle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+ 'DLL\'+sDLLName));
    if DLL_Handle <> 0 then
      begin
        hDLLHandle := DLL_Handle;
        result := true;
        FreeLibrary(DLL_Handle);
      end
    else result := False
  except
    result := false;
  end;
end;

destructor TDLL_Datei.Destroy;
begin
  inherited Destroy;
end;
Das habe ich mal gemacht, weil ich im derzeitigen Projekt 4 oder 5 verschiedene DLL´s habe. Damit konnte ich im Hauptprogramm einfach und schnell die Verfügbarkeit prüfen.

Wie würdet ihr sowas einarbeiten bei euch? Wie gesagt, ich hab derzeit das ganze in einer Pas zu liegen, ist mittlerweile etwas mehr drin und unübersichtlich. Ich weiß auch nicht ob dies in eine Klasse zu packen wirklich "sinnvoll" oder "guter Programmierstil" ist, aber deswegen frage ich ja

Edit: Der Hinweis von jaenicke wurde in #16 wurde eingearbeitet und die Library freigegeben.
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.357 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 11:12
Zitat von BAMatze:
Wie würdet ihr sowas einarbeiten bei euch? Wie gesagt, ich hab derzeit das ganze in einer Pas zu liegen, ist mittlerweile etwas mehr drin und unübersichtlich. Ich weiß auch nicht ob dies in eine Klasse zu packen wirklich "sinnvoll" oder "guter Programmierstil" ist, aber deswegen frage ich ja
Das in eine Klasse zu legen ist schon gut, wenn du damit ein Objekt (die DLL) kapselst. Aber irgendwie fehlt ein FreeLibrary.

Ich würde das ggf. auf mehrere Units aufteilen, damit die Bibliotheksunits nicht zu unübersichtlich werden. Solange man nicht gerade eine Personal Edition hat, ist das mit der Übersichtlichkeit aber nicht so schnell ein Problem, da man mit den Shortcuts (Strg + Pfeil hoch z.B.) ja schnell zwischen Deklaration und Implementierung wechseln kann und so weiter.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 11:17
Zitat von jaenicke:
Das in eine Klasse zu legen ist schon gut, wenn du damit ein Objekt (die DLL) kapselst. Aber irgendwie fehlt ein FreeLibrary.
Asche auf mein Haupt

@jaenicke also ein Projekt aufmachen und dann so viele Units, wie man verschiedene Funktionen hat und dieses Projekt dann in die neuen Anwendungen einbinden? Oder einfach eine lose Unitsammlung ohne Projekt?
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.357 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 11:22
Zitat von BAMatze:
Oder einfach eine lose Unitsammlung ohne Projekt?
Ja, ein Projekt kannst du ja nicht einfach einbinden, nur die einzelnen Units.
Die Units sollten dann nach Kategorien sortiert sein was den Inhalt angeht, wenn das ganze größer wird.

// EDIT:
Das mit NTFS Junctions ist nur wichtig, wenn du das Projekt inkl. Quelltext weitergeben willst, weil du dann ja nicht auf Units irgendwo auf der Festplatte referenzieren kannst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 13:11
Auch wenn die Frage jetzt etwas komisch klingt, wenn ich solche Klassen in extra Units erstelle und sie in anderen Komponenten einbinden will, kann ich das einfach über Unit-.Klausel machen und dann im Erfordert-Bereich die Pas-Datei mit aufführen oder muss ich das dann doch in ein Package packen und über das Package dann die Klasse installieren, damit ich sie am Ende in meiner Komponente einbauen kann?
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.357 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 13:15
Am einfachsten fügst du die Units einfach dem Projekt hinzu, denn dann kannst du diese in den Units des Projekts einfach via uses verwenden.

requires usw. sind nur für andere Packages, das brauchst du hier gar nicht.

Es sei denn du willst keine NTFS Junctions verwenden und den Quelltext weitergeben, denn dann kannst du die Units ja nicht einfach aus einem Pfad außerhalb deines Projektverzeichnisses einbinden. Dann müsstest du mehr Aufwand betreiben, z.B. was das Eintragen von Pfaden in den Bibliothekspfad angeht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Klassen verwalten, wie macht ihr das? Was ist sinnvoll?

  Alt 25. Mai 2009, 13:33
Also ich habe auch eine Funktionssammlung in einer Unit. Diese Unit kopiere ich immer in das Projektverzeichnis 8Unterordner) und benutze sie dann. So hab eich keine Probleme, wenn ich das Projhket Opensource veröffentliche, dass da eine Unit fehlen könnte oder so. Benötige ich nur ein, zwei Funktionen, kopiere ich sie mir meist schnell aus der Unit raus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 18:34 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