Du rufst RAR1.OpenFile(OpenDialog1.FileName) zweimal auf.
Das wäre so wie wenn du deine Haustür zweimal aufschliesen würdest und beim zweiten Mal lässt sich der Schlüssel nicht mehr drehen.
In Delphi kann man ja lokale Variablen anlegen und man sollte davon auch regen Gebrauch machen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
opened : Boolean;
filename : string;
begin
if not OpenDialog1.Execute then
Exit;
filename := OpenDialog1.FileName;
RAR1:=RAR1.create(self); //Komponente erstellen
try
opened := RAR1.OpenFile(filename);
if not opened then
ShowMessageFmt('Archiv %s konnte nicht geöffnet werden', [filename]);
else
ShowMessageFmt('Archiv %s geöffnet', [filename]);
finally
FreeAndNil(RAR1);
end;
end;