AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eigene Klasse in einer DLL für eine andere DLL
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Klasse in einer DLL für eine andere DLL

Ein Thema von torud · begonnen am 4. Okt 2005 · letzter Beitrag vom 5. Okt 2005
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Eigene Klasse in einer DLL für eine andere DLL

  Alt 4. Okt 2005, 13:31
Hallo Wissende!

Es hört sich ziemlich kompiliziert, scheint aber doch relativ einfach zu sein. Unserer Fa. wurde eine DLL zur Verfügung gestellt, welche sportliche Statistiken aus einer speziellen Datei ausliest und in Rekords zur Verfügung gestellt.

Offenbar gibt es da ein Problem mit der Kommunikation von VB/VBS zu dieser DLL, so dass ich mit Delphi eine andere DLL erstellt habe, welche auf die externe DLL zugreift und die Daten von dieser erhält. Das funktioniert soweit ganz gut. Nun muss ich aber nicht damit arbeiten, sondern mein Kollege.

Er arbeitet aber nun wieder mit VB/VBS und kann wohl nicht diese Rekords senden/empfangen. Deshalb hat mich kein Kollege gefragt, ob es nicht möglich wäre, dass ich in der DLL eine Klasse einbaue, die im keine Rekords sondern die einzelnen Parameter der Rekords wiedergibt.

Kann mir vielleicht einer von Euch sagen, wie er das meint? Ich weiss-Ferndiagnose ist nicht so doll, deshalb hier mal der wenige Code meiner DLL.

Delphi-Quellcode:
library Project1;

uses
  ComServ;

exports
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer;

{$R *.RES}

type

TDVParams = record
   PathSource: PChar;   // Path containing STATISTICS*.TOT
       IdTeam: integer;   // 0=Home, 1=Visitor
       IdPlayer: integer;   // 49=Team, 1..40 Player Jersey Number
     Skill: integer;      // 0=Tot, 1=Serve, 2=Reception, 3=Block, 4=Attack, 5=Set, 6=Defence
       SetN: integer;      // 0=Match, 1..5 Set
  end;

type
TDVOutPtsErr = record
     Pts: integer;      // Points (ITA #P + #C)
       Err: integer;      // Errors (ITA B= R= S= M= D= A= &= R/ S/)
       Tot: integer;      // Total events
  end;


function GetPointsErr(vParams: TDVParams; var vOutPtsErr: TDVOutPtsErr): integer;

begin

end;


end.
Danke für einen Tipp!
Danke
Tom
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Eigene Klasse in einer DLL für eine andere DLL

  Alt 4. Okt 2005, 18:48
Zitat von torud:
Offenbar gibt es da ein Problem mit der Kommunikation von VB/VBS zu dieser DLL, so dass ich mit Delphi eine andere DLL erstellt habe, welche auf die externe DLL zugreift und die Daten von dieser erhält. Das funktioniert soweit ganz gut. Nun muss ich aber nicht damit arbeiten, sondern mein Kollege.
Eine DLL mit "normalen" Funktionen ist hier nicht die richtige Lösung.
Deutlich besser wäre eine ActiveX-DLL mit einer Automatisierungsschnittstelle.
Auf diese Automatisierungsschnittstelle kann sogar aus VBScript ohne grossen Aufwand zugegriffen werden.
Also steht an 1. Stelle die Entscheidung "normale" DLL oder ActiveX DLL an.
Andreas
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Eigene Klasse in einer DLL für eine andere DLL

  Alt 4. Okt 2005, 20:15
Vielen Dank für diesen Hinweis!

Du kannst Dir aber sicher meine Verwunderung über Deine Aussage vorstellen, wenn ich Dir sage, dass diese DLL meine erste selbst erstellte war und ich noch nicht wirklich weiss, was ich mit Deiner Aussage anfangen soll.

Aber ich werde mal in der OH nachschauen...

Vielleicht bekomme ich noch einen Tipp dazu!?
Danke
Tom
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Eigene Klasse in einer DLL für eine andere DLL

  Alt 5. Okt 2005, 10:25
Zitat von torud:
Du kannst Dir aber sicher meine Verwunderung über Deine Aussage vorstellen, wenn ich Dir sage, dass diese DLL meine erste selbst erstellte war und ich noch nicht wirklich weiss, was ich mit Deiner Aussage anfangen soll.
Also:
Eine "normale" DLL exportiert Funktionen. Alle Funktionen sind unabhängig von einander.

Eine ActiveX-DLL exportiert Interfaces (Schnittstellen) auf Objekte. (ist also objekt-orientiert)
Man erkennt eine ActiveX-DLL daran, dass die Funktionen
Code:
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer
exportiert werden.
Um eine ActiveX-DLL zu erstellen brauchst du Know-how über Interfaces, Typbibliotheken, den TLB-Editor von Delphi, IDispatch und Automatisierung.
Als minimale Delphi-Version: Delphi 5.
Um Dir dieses Know-How anzueignen brauchst du 2 Wochen bis 3 Monate.
Buchvorschlag: COM / DCOM / COM+ mit Delphi von Andreas Kosch
Andreas
  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 11: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