Wie TAbCabExtractor anwenden?



  • Hi und gute Nacht @ all,

    ich hab mir das Abbrevia Package runtergeladen und in meinen Borland 6 integriert.
    Soweit scheint es auch zu funktionieren und jetzt versuche ich, ein einfaches Tool zum entpacken von CAB Archiven zu erstellen, um mich ein bischen da rein zu arbeiten.
    Nur irgentwie stürzt mir das Programm immer mit Zugriffsfehrletzungen ab.

    Das hab ich bisher mal testweise gecodet:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    
    #include <AbCabExt.hpp>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    bool TForm1::ExtractCab(AnsiString CabPath , AnsiString ExtractPath)
    {
        TAbCabExtractor * CabExt;
        CabExt->TempDirectory = ExtractPath; // <= hier schmiert es immer ab
        CabExt->FileName = CabPath;
        CabExt->ExtractTaggedItems();
        return true;
    }
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
          if(OpenDialog1->Execute()) {
              Edit1->Text = OpenDialog1->FileName;
          }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
          if(OpenDialog1->Execute()) {
              Edit2->Text = OpenDialog1->FileName;
          }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
          if(ExtractCab(Edit1->Text , Edit2->Text)) ShowMessage("OK");
          else ShowMessage(":(");
    }
    //---------------------------------------------------------------------------
    

    Beispiele oder CodeSnippets habe ich bisher leider nicht gefunden und die Docu ist auch irgentwie ein wenig rar an Beispielen, deshalb frag ich hier 😉
    Hoffe ihr könnt mir ein bischen weiterhelfen...

    MfG ViperT



  • Sagt dir das Schlüsselwort new etwas?



  • ja sicher sagt es mir was, doch wenn ich z.B. schreibe:

    TAbCabExtractor * CabExt;
        CabExt = new TAbCabExtractor;
    

    erhalte ich folgende Fehlermeldung:

    [C++ Fehler] Unit1.cpp(17): E2285 Keine Übereinstimmung für 'TAbCabExtractor::TAbCabExtractor()' gefunden
    

    irgentwie steh ich momentan auf der Leitung...



  • Offenbar erwartet der Konstruktor einen Parameter, z.B. ein Owner-Objekt.

    Und gewöhn dir das Weglassen der Konstruktor-Klammern am besten gleich wieder ab (bzw. gar nicht erst an).



  • ok, ich stand echt auf der Leitung 😃
    so funktioniert es:

    TAbCabExtractor * CabExt;
        CabExt = new TAbCabExtractor(this);
    

Anmelden zum Antworten