![]() |
Delphi-Version: 5
Zugriffsverletzung bei Aufruf von unrar.dll?
Guten Abend liebe DP.
Ich Programmiere im Moment einen Auto-Updater für eines meiner Programme. Das Herunterladen funktioniert soweit, er lädt fein das WinRAR-Archiv runter, so wie er es soll. Nun zum eigentlichem Problem: Ich will dieses Archiv mithilfe der DFUnRar-Komponente entpacken, doch sobald ich die entsprechende Prozedur aufrufe, erhalte ich einen Fehler a la "Zugriffsverletzung in Modul unrar.dll". Wenn ich dasselbe Rar Archiv mithilfe der mitgelieferten Demo-Komponente entpacke läuft es fehlerfrei. Vielleicht findet ihr dabei den Fehler, hier der entsprechende Source:
Delphi-Quellcode:
Danke im Vorraus
var
DFUnRar: TDFUnRar; //Variable, die die Instanz des Objektes enthalten soll begin DFUnRar := TDFUnrar.Create(Self); //Instanz des Objektes erzeugen try //ab hier alle Fehler abfangen, damit das Objekt auf jeden Fall freigegeben wird with DFUnRar do begin FileName := ExtractFilePath(ParamStr(0)) + 'TestFolder.rar'; //Dateiname des Archives angeben Directory := ExtractFilePath(ParamStr(0)) + 'Temp'; //Ausgabeverzeichnis (darf nicht auf \ enden!) ForceDirectories(Directory); //sicherstellen, dass temporäres Ausgabeverzeichnis auch existiert FileList.Clear; //Dateiliste der zu entpackenden Dateien leeren //Befindet sich die Datei in einem Unterverzeichnis im Archiv, so muss auch dieses mit angegeben werden Mode := DFRAR_EXTRACT; //Extract kann Dateien entpacken oder nur Inhaltsverzeichnisse erstellen (DFRAR_LIST) OverrideEvent := OR_NEVER; //Ist die Datei im Ausgabeverzeichnis bereits vorhanden, so auf keine Fall überschreiben (Alternative OR_ALWAYS) Extract; //Nun aber los ;-) end; finally DFUnRar.Free; //und nicht vergessen: Objekt auf brav wieder freigeben end; [EDIT] Hat sich erledigt, hatte sich ein Fehler in den Pfad eingeschlichen -.-" Code ist hier in der DP gesucht worden.[/EDIT] |
AW: Zugriffsverletzung bei Aufruf von unrar.dll?
Hallo,
hat zwar nichts mit dem Problem zu tun, aber vielleicht solltest du noch prüfen ob wirklich alle Verzeichnisse vorhanden sind/erstellt worden sind.
Delphi-Quellcode:
In diesem Fall gibt ForceDirectories auch true zurück wenn die Verzeichnisse schon vorhanden sind und nicht mehr erstellt werden müssen.
If ForceDirectories(Directory) then //sicherstellen, dass temporäres Ausgabeverzeichnis auch existiert
begin FileList.Clear; //Dateiliste der zu entpackenden Dateien leeren //Befindet sich die Datei in einem Unterverzeichnis im Archiv, so muss auch dieses mit angegeben werden Mode := DFRAR_EXTRACT; //Extract kann Dateien entpacken oder nur Inhaltsverzeichnisse erstellen (DFRAR_LIST) OverrideEvent := OR_NEVER; //Ist die Datei im Ausgabeverzeichnis bereits vorhanden, so auf keine Fall überschreiben (Alternative OR_ALWAYS) Extract; //Nun aber los ;-) end else begin //Irgendwas machen wenn die Verzeichnisse nicht vorhanden sind/erstellt worden sind. end; Deswegen kann man auf
Delphi-Quellcode:
verzichten
DirectoryExists
|
AW: Zugriffsverletzung bei Aufruf von unrar.dll?
okey, danke ;) hab das problem auch soweit schon gelöst, ist nen bisschen schwierig mit den richtigen Pfaden bei DFUnrar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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