AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [BCB] DEC: IDECProgress Interface Probleme
Thema durchsuchen
Ansicht
Themen-Optionen

[BCB] DEC: IDECProgress Interface Probleme

Ein Thema von Dunedain · begonnen am 2. Dez 2006
Antwort Antwort
Dunedain
(Gast)

n/a Beiträge
 
#1

[BCB] DEC: IDECProgress Interface Probleme

  Alt 2. Dez 2006, 23:55
Hallo,

habe mich gerade mal wieder mit dem DEC beschäftigt, und bin zufällig auf die Möglichkeit gestoßen, den Fortschritt in einer Progress Bar anzeigen zu können. So weit, so gut. Dachte ich zumindest.

Das implementieren des benötigten Interfaces IDECProgress im BCB stellt sich leider als schwieriger heraus, als es sich anhört.

Um der Problematik aus dem Weg zu gehen, für jede Mögliche ProgressBar (JEDI,mbTBXLib,Win32,...) eine Klasse für das IDEC Interface abzuleiten, wollte ich das ganze über eine Wrapper Klasse realisieren, die als Parameter die Progressbar erhält und diese dann entsprechend bedient...

Um nicht die Methoden des IUnknown Interfaces implementieren zu müssen (oder einfacher gesagt, weil ich es nicht kann ), habe ich die Wrapper Klasse also von TInterfacedObject und IDECProgress ableiten wollen, bekam dann aber ich eine Fehlermeldung "VCL Klassen dürfen nicht mehrere Basisklassen haben". Bei einem Blick in die Hilfe für TInterfacedObject fiel mir dann folgende Passage auf: "TInterfacedObject darf in C++Builder-Anwendungen nicht eingesetzt werden"...




Hier mal der zu verwendende Code:
Code:
//---------------------------------------------------------------------------

#ifndef DECProgressBarWrapperH
#define DECProgressBarWrapperH

//---------------------------------------------------------------------------

#include "DECUtil.hpp"

//---------------------------------------------------------------------------

class DECProgressBarWrapper: public TInterfacedObject, IDECProgress
{

    private:
        TProgressBar *Bar;
        bool Initialized;

    protected:

    public:
        DECProgressBarWrapper( void * ProgressBar );
        void __stdcall Process( __int64 Min, __int64 Max, __int64 Pos );

};

//---------------------------------------------------------------------------

#endif
sowie
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DECProgressBarWrapper.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

DECProgressBarWrapper( void * ProgressBar )
{

    this->Bar = NULL;
    this->Initialized = false;


    if( dynamic_cast <TProgressBar *> ProgressBar )
    {
        this->Bar = dynamic_cast <TProgressBar *> ProgressBar;
    }
    //else if( dynamic_cast <TJvProgressBar *> ProgressBar )
    //{
    //    this->Bar = dynamic_cast <TJvProgressBar *> ProgressBar;
    //}
    //
    // ...
    //

    if( this->Bar != NULL )
    {
        this->Bar->Position = 0;
    }

}


void __stdcall Process( __int64 Min, __int64 Max, __int64 Pos )
{

    if( this->Bar != NULL )
    {

        if( !this->Initialized )
        {

            this->Bar->Min = Min;
            this->Bar->Max = Max;
            this->Initialized = true;

        }

        this->Bar->Position = Pos;

    }

}

Jetzt natürlich meine Frage, kann das so funktionieren, wie ich mir das vorstelle?
Kann mir jemand erklären, wie ich das ganze in C++ realisieren kann, oder ist vielleicht jemand so freundlich mir den Code nach Delphi zu übersetzten?
  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 16:39 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