Hi,
ich habe momentan ein Problem mit der DFunrar Komponente.
Ich möchte gernen ein kleines Entpack Tool programmieren, welches eine Passwortliste mit den Passwörtern abarbeitet die ich am häufigsten benutze, bzw. bekomme.
Nun hab ich mich als an der Kompo versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.FormCreate(Sender: TObject); begin I := -1; Liste := Tstringlist.Create; Liste.Add('test'); Liste.Add('test1'); Liste.Add('test2'); Liste.Add('test3'); Liste.Add('test4'); Liste.Add('test5'); end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Unrar; begin dfUnRar1.FileList.Clear; dfUnRar1.FileName := DateiPfad; dfUnRar1.OverrideEvent := OR_ALWAYS; dfUnRar1.Directory := SpeicherPfad + '\'; dfUnRar1.Mode := DFRAR_EXTRACT; dfUnRar1.Extract; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.DFUnRar1Password(Sender: TObject; var Password: string); begin if Edit1.Text = '' then begin Inc(I); Password := Liste.Strings[I]; end else Password := Edit1.Text; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.DFUnRar1Error(Sender: TObject; Message: string; MessageID: Integer); begin ShowMessage(Message); StatusBar1.SetTextBuf(Pchar(Message)); DfUnrar1.StopProcessing := true; if ((Message = 'Fehlerhafte Daten') or (Message = 'Datei-Header defekt')) and (Edit1.Text = '') then begin Unrar; end; end; |
Das Tool funktioniert soweit auch ganz gut, jendenfalls solange man das Passwort per Hand eingibt. Wenn er nun aber die Liste durcharbeiten soll und an die Stelle mit dem richtigen Passwort kommt, gibt es beim entpacken eine Zugriffsverletzung in der Unrar.dll.
Die Datein sind allerdings danach trotzdem entpackt.
Nun würde mich interessieren woher der Fehler kommt, ich vermute mal durch die Tstringlist kann mir aber nicht erklären warum.
Ich hoffe mir kann jemand helfen
(Im anhang mal mein Code inkl einer gerarten Textdatei mit dem Passwort "test3" (DfUnrar Komponente wird benötigt!))
mfg Blamaster