Hallo,
danke für eure zahlreichen Antworten!
Mittlerweile bin ich mir schon sicher, dass eines (oder mehrere) meiner Objekte freigegeben wird und ich deshalb nicht mehr darauf zu greifen kann (bzw. nur mit oben genannten Fehlern).
Meine Annahme ist derzeit, das nach dem Benutzen in einer Prozedur im Hauptprogramm (Abrufen der Eigenschaften etc.) der Destructor aufgerufen und mein Objekt freigegeben wird und das die Fehler verursacht.
Ich werde heute nachmittag das ganze ausführlich debuggen, um hoffentlich die Fehlerquelle zu finden und diese zu beseitigen.
@negaH:
Ich hatte mein Konzept folgendermaßen geplant:
Ich habe das Interface
ICipher, welche einige Get und Set Methoden für Eigenschaften, wie Namen und Beschreibung der Verschlüsselung hat, sowie Prozeduren, zum Ver- und Entschlüsseln von Texten und Dateien (insgesamt also 4). Sowie noch 2 Prozeduren der ich einen Stream übergebe, damit die Verschlüsselung ihre Einstellungen (falls erforderlich) darin speichern bzw. daraus lesen kann.
Jetzt müsste eigentlich jede Verschlüsselung
DLL diese ganzen Get und Set Methoden implementieren. Da habe ich
TCipher für geschrieben. Es ist abgeleitet von
TInterfacedObject und
ICipher implementiert diese Methoden und versieht zu dem die 6 anderen Prozeduren mit virtual; und abstract; damit diese von den Klassen der Verschlüsselung
DLL überschrieben werden könnte. Das ganze ist jedoch optional. Wer möchte, kann auch trotzdem seine eigene Implementierung schreiben. TCipher vereinfacht das ganze jedoch. In meinen Verschlüsselungs-DLLs sind die Klassen von TCipher abgeleitet und überschreiben die 6 Prozeduren (Manche haben noch ein Paar private Variablen, z.B. zum Speichern der Schlüssellänge etc.) Die
DLL exportiert diese Klasse mit eine Funktion die einen VAR Parameters des Typs ICipher erwartet.
Im Hauptprogramm habe ich dann die Klasse
TCustomCipher, die dein ICipher Objekt und
DLL Handle und Namen speichert. Beim Constructor wird eine
DLL geladen und die Verschlüsselung aus der
DLL importiert.
TCipherList rundet das ganze ab, in dem es alle .dll aus einem angegebenen Verzeichnis holt und dafür dann die TCustomCipher Objekte erstellt.
Im Programm suche ich mir dann die Verschlüsselung der Liste, zeige ihre Eigenschaften an oder Ver/Entschlüsse damit.
Ich hoffe das war das, was du wissen wolltest.
mfG
mirage228
David F.