AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

KAZip - ich hab da mal ne' Frage zu

Ein Thema von ascotlx · begonnen am 29. Jun 2007 · letzter Beitrag vom 1. Jul 2007
Antwort Antwort
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#1

KAZip - ich hab da mal ne' Frage zu

  Alt 29. Jun 2007, 18:01
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
workarounds gibt es wie Sand am Meer und manchmal hat man ein workaround ohne es zu wissen
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: KAZip - ich hab da mal ne' Frage zu

  Alt 29. Jun 2007, 19:52
Bevor du KAZip1 benutzt:
KAZip1 := TKAZip.Create; OT: Du solltest mal in Betracht ziehen, aussagekräftige Namen für Variablen zu benutzen, statt zu nummerieren.
  Mit Zitat antworten Zitat
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#3

Re: KAZip - ich hab da mal ne' Frage zu

  Alt 30. Jun 2007, 11:49
Zitat von Alien426:
Bevor du KAZip1 benutzt:
KAZip1 := TKAZip.Create; OT: Du solltest mal in Betracht ziehen, aussagekräftige Namen für Variablen zu benutzen, statt zu nummerieren.
Hallo Alien426 und alle anderen ;o)

wenn ich Deinen Vorschlag probiere, bekomme ich die Fehlermeldung: "Nicht genügend wirkliche Parameter"
Ich hänge auch mal die meldung an, wenn ich TKAZip.Create eintippe. Was muss den als AOwner eingetragen werden?
Ich habe schon "Self" ausprobiert, da sagt der Compiler aber nur "Self" wäre ein nicht definierter Bezeichner.
Leider fehlt mir noch das Hintergrundwissen, um mit solchen Dingen "fertig" zu werden. Das mit dem "Self" habe
ich mal in Verbindung mit einem Form.Create benutzt.

hat noch jemand eine Idee ???

Gruss && Danke für Eure Unterstützung

ascotlx

EDIT - NACHTRAG - EDIT
ich habe es mit:
 KAZip1 := TKAZip.Create(nil); probiert und es funktioniert, ich weiss zwar nicht wieso, aber vielleicht kann mir das ja jemand mal erklären...
vielen Dank schon mal ....

ich wünsche allen DP'lern (und nicht DP'lern) ein tolles Wochenende
Miniaturansicht angehängter Grafiken
tkazip.create_515.jpg  
workarounds gibt es wie Sand am Meer und manchmal hat man ein workaround ohne es zu wissen
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: KAZip - ich hab da mal ne' Frage zu

  Alt 30. Jun 2007, 19:04
Zitat von ascotlx:
Was muss den als AOwner eingetragen werden?
Ich habe schon "Self" ausprobiert, da sagt der Compiler aber nur "Self" wäre ein nicht definierter Bezeichner.
Das kann in diesem Fall nicht funktionieren, da du in der Prozedur packer() bist. Wenn du in einer Methode des Forms wärst (Form1.Packer()), dann würde mit Self das aktuelle Objekt, also Form1 angesprochen.

Mit nil sagst du, dass das Objekt keiner Komponente zugeordnet werden soll, die für das Freigeben zuständig ist. Da du manuell frei gibst ist also nil in Ordnung.

Mach dich mal mit der Hilfe vertraut. Bei so gut wie jeder Komponente steht die Erklärung zu AOwner im Abschnitt der Methode Create.
  Mit Zitat antworten Zitat
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#5

Re: KAZip - ich hab da mal ne' Frage zu

  Alt 1. Jul 2007, 23:27
@Alien426

Besten Dank für die Erklärung....
Ich werde wohl doch nicht um das Lesen eines Buches herumkommen, mit
der Hilfe hab ich ab und zu noch so meine Verständisprobleme ;o)

gruss ascotlx
workarounds gibt es wie Sand am Meer und manchmal hat man ein workaround ohne es zu wissen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz