![]() |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
@gneric: nicht uninteressant aber leider fehlt noch etwas in Richtung OOP.
Hier ein Ausschnitt aus dem Code:
Delphi-Quellcode:
Hier müsste es natürlich eine gemeinsame Basisklasse mit einer virtuellen, abstrakten Methode geben. DownloadFeedback müsste ein Event sein (anstelle eines Parameters).
type
TDownloadActionLoadUrl = class public class procedure Download(ziel, downloadurl: string; DownloadFeedback:TDownloadProgressEvent); end; .... TDownloadBits = class public class procedure DownloadForground(ziel, downloadurl: WideString; DownloadFeedback:TDownloadProgressEvent); class procedure DownloadBackground(ziel, downloadurl, ExeName, Params: WideString); class procedure CompleteJob(JobId: WideString); end; |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Wie bei allen Vorträge und Artikeln gilt:
Es handelt sich hier um Beispiele wie etwas gelöst werden kann. Das die Quellen nicht der Weisheit letzter Schluss sind, sollte jedem klar sein. Der Quelltext ist nur für Demozwecke und muss natürlich für "production use" ausgearbeitet werden. Ja, du hast Recht - wenn man den Downloader austauschen will, müssten gleiche Interfaces her. Allerdings sollte dann auch die gleiche Downloadtechnik für das herunterladen der XML genutzt werden. Das läuft in der Demo komplett über MSXML. Vorteil von einer einheitlichen Lösung ist u.a. die Konfiguration von Web-Proxies. Idealerweise nimmt man die in Windows hinterlegten Einstellungen. Ich denke ich würde den BITS mit eine, hohen Prioritätsdownload verwenden. Dieser müsste nicht extra in der Firewall freigeschaltet werden. |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Hey Leute, hab wieder mal ein kleines Problem.
Die WebUpdate Komponente enthält ja den HTTP-Indy-Client. Jetzt brauche ich diesen aber auch noch seperat in meinem Programm. Sobald ich die Komponete auf die Form ziehen möchte kommt folgende Meldung: Package "IndySystem150" kann nciht geladen werden. Es enthält die Unit "IdWship6", die auch im Package "WebUpdateKompontente" enthalte ist. Klar, das Problem ist schon mehrfach diskutiert worden. Besonders interessant finde ich den Ansatz, dass eine Package (in diesem Fall das IdHTTP-Package) einfach in die Requires-Klausel aufzunehmen. Das hat wohl den gleichen effekt wie die uses-Klausel, danach gehts aber wohl. Nur wo ist in der Unit der WebUpdateKomponente die requires Klausel? Das ist wohl eine Klausel die nur in einem Package deklariert werden kann und nicht in einer Unit. Wie auch immer, ich stehe wie der Ochs vorm Berg. Ich weiß zwar welche Unit den Fehler verursacht, aber wie kann ich diese aus der WebUpdateKomponente auslagern so dass siese noch funktioniert UND ich IdHTTP noch seperat benutzen kann? :( Hat jemand eine Idee? Vllt wie ich mit der requires-Klausel weiter komme? Kann ich diese auch in der Unit der WebUpdateKomponente deklarieren? lg, thestallion90 |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
In der Projektdatei.
|
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
In der Projektdatei der Komponente? Also der TUpdateKomponete? Wie komme ich denn da hin? Die Komponente liegt ja wie alle anderen auch in der Tool-Leiste. Oder liegt auf der Form, je nachdem.. Wenn ich mir zB die Deklaration eines Events der Komponente anzeigen lasse öffnet sich die betreffende unit der Komponente. Aber wie komme ich auf die Projektdatei?
lg, thestallion90 |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Zu Erstellung wurde aber ein Projekt verwendet ( .dpr)
|
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Aber wenn ich das richtig sehe liegt mir das Projekt nicht vor, oder übersehe ich da irgendetwas? 8( Es geht mir ja darum, dass ich das Problem beheben kann...
|
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Doch diese Datei muss ja vorhanden sein, da ja die Komponente im Quelltext ohne Package vorliegt.
Irgendwo muss WebUpdateKompontente.dpr vorhanden sein |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Ja, die Komponente liegt als Unit vor. Und ich habe sie in Delphi per "Komponete/Komponente installieren/Unit auwählen" installiert. Ich habe also nur die Unit ausgewählt und hatte keine dpr-Datei. Kann ich vllt einfach eine neue Kompoentente erstellen und dann den Code aus der vorhandenen Unit reinkopieren? Dann weiß ich nicht, von welcher Komponente ich meine neue ableiten soll damit es funktioniert (das muss man ja auswählen, wenn man auf "Komponente erstellen" geht)...
PS: warum bekomme ich eigentlich keine eMail-Benachrichtigung mehr wenn es hier was neues gibt? :( |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
An dieser Stelle hast du die Wahl ein neunes (Package-)Projekt anzulegen oder die Unit einem vorhandenen hinzuzufügen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz