Hallo alle zusammen,
ich habe eine Frage und hoffe, dass ich mich verständlich ausdrücke:
Ich will mehrere Dateien zu einen Archiv zusammenfassen.
Nun möchte ich eine procedur aufrufen die das für mich erledigt. Die procedur liegt in einer
eigenen .pas (ohne Form) Datei und war schon lauffähig bevor ich diese procdeur eingepflegt
habe. Als Fehlermeldung bekomme ich eine "
Access Violation" und ich weiss nicht warum...
Vielleicht kann mir jemand helfen, hier der Code
Delphi-Quellcode:
...
unit blah;
interface
uses SysUtils, FileCtrl, Windows, Forms, inifiles, ShellApi, Messages,
Dialogs, classes, KAZip;
procedure WriteLog(sText:
string);
procedure packer(IniAList:TStrings);
var s, i, sec :
string;
KAZip1 : TKAZip;
const ....
implementation
Delphi-Quellcode:
procedure packer(IniAList:TStrings);
var s, str1, str2, str3: string;
i : integer;
Alist: TStringlist;
begin
AList:=TStringlist.Create;
AList.Assign(IniAList);
s:='=';
str2:=readsini('Archiv','Name0','newarc');
str3:=readsini('Verzeichnis','TPFad','');
if DirectoryExists(str3) then
begin
KAZip1.CreateZip(str3+'\'+str2+'.zip');
KAZip1.FileName:=str2+'.zip'; <============ Hier fällt er anscheinend auf die Nase
KAZip1.Active:=true;
Form3.ProgressBar1.Min:=0;
Form3.Show;
Form3.ProgressBar1.Max:=AList.Count;
for i := 0 to AList.Count -1 do
begin
str1:=copy(AList[i],Pos(s,AList[i])+1,255);
KAZip1.AddFile(str1);
Form3.Label1.Refresh;
Form3.ProgressBar1.Position:=Form3.ProgressBar1.Position + 1;
end;
KAZip1.Active:=false;
KAZip1.Close;
KAZip1.Free;
Form3.ProgressBar1.Position:=0;
Form3.Close;
AList.Free;
end
else
begin
MessageDlg( MTP + Msupp ,mtInformation, [mbOk], 0);
WriteLog(MTP);
end;
end;
In den Variablen stehen die Werte drin, die reingehören, soweit alles gut (Hoffe ich ....)
Kann mir bitte jemand weiterhelfen???! Ich habe keine Ahnung was da schief läuft.
Gruss && danke
ascotlx