AGB  ·  Datenschutz  ·  Impressum  







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

CD brennen mit XE-7 -> DLL erstellen

Ein Thema von mm1256 · begonnen am 27. Nov 2014 · letzter Beitrag vom 27. Nov 2014
Antwort Antwort
Seite 1 von 2  1 2      
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 10:36
Hallo,

ich habe seit 2006 die Komponente "Magic CD/DVD Burner Pro" im Einsatz. Auch beim letzten Update 2012 nicht die Quelltexte dazu gekauft. Ist die einzige Komponente, zu der ich nicht den kompletten Quelltext habe. das rächt sich nun beim Wechsel zu XE-7. Das Problem ist, dass die bpl nicht installiert bzw. compiliert werden kann. Auf der Homepage des herstellers ist es ziemlich ruhig, die letzte Newsmeldung ist 2 Jahre alt, und auf meine Mail antwortet keiner.

Also bleibt mir wohl nichts anderes übrig, als mit XE-2 eine DLL zu erstellen, auf die ich dann mit XE-7 zugreife. Soweit der Grundgedanke. Nur, ich brauche ja auch Rückmeldungen von der DLL an die App über Fortschrittanzeige usw. Wenn ich der DLL das Handle der aufrufenden Form übergebe, müsste das doch klappen. Dann könnte ich eine "Fortschritt-Message" an das aufrufende Fenster schicken, mit den Werten in WParam und LParam...oder so ähnlich. Bin da jungfräulich, habe sowas noch nicht gemacht.

Weil die Komponente ja eigentlich für den VCL-Einsatz gedacht ist, muss ich das Brenner-Objekt zur Laufzeit in der DLL erzeugen. Da ich damit wenig Erfahrung habe, gibt es allgemein gültige Dinge die man da beachten muss? Oder welche Stolperfallen lauern da generell?

Bin dankbar für jeden Hinweis bzw. Tipp!
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 10:58
Du kannst doch einfach aus Deinem bestehenden Projekt eine DLL machen - bzw. aus dem Form.

ggf. kannst Du die DLL einfach aus einem gepackten Memory-Stream laden, der als Resource in Deine XE7 app eingebunden ist (Windows).

Fertig.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 11:21
Du kannst doch einfach aus Deinem bestehenden Projekt eine DLL machen - bzw. aus dem Form.
Wegen einer Form die komplette VCL in eine DLL packen, das wäre Ressourcenverschwendung. Außerdem, die Form hat auch Datenbankzugriff, was ich zum Brennen ja gar nicht brauche. Es geht darin um die komplette Abwicklung von Datensicherung und Rücksicherung (Assistenten für die verschiedenen Funktionen). Wenn ich das alles unverändert rein packe (hab ich schon testweise gemacht) gibt's eine DLL mit knapp 12 MB. Außerdem ist die Form von anderen Forms abgeleitet, erbt also Inhalte die wiederum in anderen Programm-Modulen verwendet werden.

Ich müsste also bei Updates/Programmänderungen Quelltexte mehrfach pflegen, und genau das will ich ja mit der DLL-Variante vermeiden. Die erstell ich einmal, und dann isses gut für die nächsten Jahre, egal was mit Delphi kommt - bzw. von diesem Hersteller nicht mehr kommt. Die Auswahl an Brennerkomponenten ist nämlich sehr übersichtlich. Die von Binary Magic ist die Einzige die es gibt und dieses Nero-Api-Gedöns ist keine Alternative
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 11:34
Bietet Windows nicht seit XP auch eine Brenn-API?
Siehe: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Ich glaube so ein Build-In-API wird für viele Komponentenherstellen in diesem Bereich negativ aufs geschäft geschlagen haben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 12:33
Hallo Bernhard,

mit deiner Vermutung über die Rentabilität liegst du wahrscheinlich richtig. Übrigens, es ist kein Build-In-Api sondern eine VCL-Komponente, die es auch mit Quellcode für 1.299,- Dollar gibt.

Vielen Dank für den Link. Ich hatte den schon mal im Visier als ich die letzte Version für XE-2 upgedated habe. Kostet ja jedes mal ein paar Euronen.

Habe es dann aber wieder sein lassen, weil ich VB nicht kann, und weil ich auch kein Delphi-Beispiel hierzu fand, was mich durchaus wundert. Es muss nämlich 100%-ig funktionieren, d.h. der Anwender darf gar nicht die Möglichkeit haben, irgend etwas falsch zu machen. Es geht schließlich um seine Daten (Datenbanken). Diese Sicherheit sehe ich bei dem VB-Script irgendwie nicht. Man müsste es halt mal ausprobieren.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#6

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 12:57
Zitat:
For an example that burns a disc image, see VBScript example.
Beispielcode in VBScript ... man kann diese API natürlich auch von Delphi aus ansprechen.

Delphi-Beispielcode: http://pblog.ru/?p=333

z.B. Bei Google suchendelphi IFileSystemImage
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 13:27
mit deiner Vermutung über die Rentabilität liegst du wahrscheinlich richtig. Übrigens, es ist kein Build-In-Api sondern eine VCL-Komponente, die es auch mit Quellcode für 1.299,- Dollar gibt.

Vielen Dank für den Link. Ich hatte den schon mal im Visier als ich die letzte Version für XE-2 upgedated habe. Kostet ja jedes mal ein paar Euronen.
Die Kompo kenne ich. Hatten wir auch mal im Einsatz. Irgendwann hat der Kunde auf eine Brennstation mit Spezieller API umgestellt und wir musstn diese Unterstütztn.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 15:06
Hallo,

vielleicht nochmals zurück zu meiner eigentlichen Frage bzw. Problem.

Auszug aus der DLL:

Delphi-Quellcode:

var
  CdBurner : TMCDBurnerPro;

{------------------------------------------------------------------------------}
{- Initialisierung des Burner's -----------------------------------------------}
{- aClientHandle: Handle des aufrufenden Formulares ---------------------------}
{- aOwner: Aufrufendes Formular/Application -----------------------------------}
{- aOnWriteDoneProc: Wird aufgerufen wenn der Brennvorgang abgeschlossen ist --}
{------------------------------------------------------------------------------}
function Burner_Open(aClientHandle: THandle; aOwner: TComponent;
                     aOnWriteDoneProc: TOnWriteDoneProc): boolean;
var
  i: integer;
begin
  Result := false;
  ClientHandle := aClientHandle;
  CdBurned := false;
  try
    CdBurner := TMCDBurnerPro.Create(aOwner); ==> hier knallt es schon: Zugriffsverletztung beim lesen von Adresse 00000081
    CDBurner.InitializeASPI(False);
    CDBurner.OnWriteDone := aOnWriteDoneProc;
    Result := Burner_AutoSelect;
  except
    on E:Exception do Burner_SendMessage(E.Message);
  end;
end;
Ich vermute mal, dass die Kompo im Constructor irgendwie feststellt, dass sie nicht auf einem Formular liegt. Ist das möglich?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 15:18
Du kannst nicht über Modulgrenzen hinweg Objektinstanzen übergeben. Wozu brauchst Du denn den Owner? Du kannst doch genausogut nil als Owner setzen, nur musst Du die Komponente dann am Ende selbst wieder freigeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#10

AW: CD brennen mit XE-7 -> DLL erstellen

  Alt 27. Nov 2014, 15:21
Schnittstelle EXE <-> DLL :
  • nichts was die Speicherverwaltung vom Delphi benutzt (außer man verwendet ShareMem u.ä.)
  • niemals irgendwelche Delphi-Objekt-Instanzen übergeben
    allemein nichts übergeben, was die RTTI benutzt
  • nichts aus der VCL (keine TComponent, maximal HWND ala MyComponent.Handle)
  • ...
  • Interfaces (IInterface) sind erlaubt (keine direkten Objekte)
  • ShortString, PChar, PAnsiChar, PWideChar oder WideString sind erlaubt (keine String, AnsiString, UnicodeString usw.)

Wäre alles erlaubt, wenn man Packages nutzt, aber das würde deinem Vorhaben entgegen stehen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Nov 2014 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:09 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