![]() |
Standard DLL in VB geschrieben
Liste der Anhänge anzeigen (Anzahl: 2)
Für die ganz schlauen hier die meinen das es nicht geht.. @Elvis ;)
Lebst vielleicht doch hinterm Mond ? hihiiihi nur Spass "DLL"
Delphi-Quellcode:
"Anwendung"
Function DLLMain(ByVal A As Long, ByVal B As Long, ByVal c As Long) As Long
DLLMain = 1 End Function Sub Main() //This is a dummy, so the IDE doesn't complain //there is no Sub Main. End Sub //add more functions here, ie. Function addition(ByVal A As Double, ByVal B As Double) As Double addition = A + B End Function Function subtraction(ByVal A As Double, ByVal B As Double) As Double subtraction = A - B End Function Function showmsg() As String Dim sInput As Long Dim intMin As Integer Dim intSec As Integer Dim TimeString As String sInput = InputBox("Bitte Zeit in MilliSekunden eingeben", "Result Zeit in Sekunden") If sInput > 0 Then intMin = sInput \ 60 intSec = Int(sInput - intMin * 60) TimeString = Format$(intMin, "00") & ":" & Format$(intSec, "00") End If showmsg = TimeString End Function
Delphi-Quellcode:
Test im Anhang ;)
Private Declare Function subtraction Lib "TestDLL.DLL" (ByVal A As Double, ByVal B As Double) As Double
Private Declare Function addition Lib "TestDLL.DLL" (ByVal A As Double, ByVal B As Double) As Double Private Declare Function showmsg Lib "TestDLL.DLL" () As Long // Windows API Declaration Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" ( _ ByVal lpString As Long _ ) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _ ByRef Destination As Any, _ ByRef Source As Any, _ ByVal Length As Long _ ) Private Sub btnTime_Click() lblTime.Caption = VBStrFromAnsiPtr(showmsg()) End Sub Private Sub cmdExit_Click() End End Sub Private Sub Form_Load() lblResult(0) = "9.87 + 2.99 = " & CStr(addition(9.87, 2.99)) lblResult(1) = "10 - 8.43 = " & CStr(subtraction(10, 8.43)) lblResult(2) = "9999 + 1543 = " & CStr(addition(9999, 1543)) End Sub Private Function VBStrFromAnsiPtr(ByVal lpStr As Long) As String Dim bStr() As Byte Dim cChars As Long On Error Resume Next // Get the number of characters in the buffer cChars = lstrlen(lpStr) // Resize the byte array ReDim bStr(0 To cChars - 1) As Byte // Grab the ANSI buffer Call CopyMemory(bStr(0), ByVal lpStr, cChars) // Now convert to a VB Unicode string VBStrFromAnsiPtr = StrConv(bStr, vbUnicode) End Function Edit: hab noch eine Function angehängt |
Re: Standard DLL in VB geschrieben
Und funktioniert diese auch in anderen Sprachen?
|
Re: Standard DLL in VB geschrieben
Zitat:
Entry point hast ja ;) gruss Emil |
Re: Standard DLL in VB geschrieben
Vielen Dank das du das Thema hier weiter verfolgst.
![]() Aber ich hoffe es geht jetzt hier nicht nur darum, zu zeigen das VB auch das kann was Delphi kann. Mich würde viel mehr interessiere, ob man in beiden Welten auch beides realisieren kann und wie (Aufwand). Bitte keine Kriege ausfechten. Kann man nicht beides unter einen Hut bringen? Ich finde das Thema ganz spannend. Trotzdem die Frage warum darf mein Quellcode nichts von allem wissen und muss es doch benutzen können? Als Ergänzung zum Urspungsthema und meinem Beispiel dort... Wenn ich in meiner Klasse, die ich von einem Interface ableite eine zusätzliche Methode realisiere, kennt mein Interface und damit die erstellte Instanz ja diese spezielle Methode nicht. Deshalb muss, wenn ich solche Methode nutzen will, die nicht im Interface veröffentlicht wurden, die abgeleiteten Klassen in der Anwendung, die die zusätzliche Methode benutzen will, doch auch bekannt sein? Gut, hier könnte man natürlich auch noch ein weiteres Interface erstellen, mit dieser Erweiterung, dann müssten die konkreten Klassen nicht bekannt sein. Trotzdem verstehe ich nicht wieso selbst das Interface nicht bekannt sein soll? Das kann ich nicht nachvollziehen. |
Re: Standard DLL in VB geschrieben
Zitat:
Mein Beispiel war darauf ausgelegt einen verbindung zwischen zwei Welten herzustellen Deiner anwendung und Plugins welche von fremden erstellt wurden die du also nicht kennst. Der Clou ist halt dieser das die IPersonU als Activex als Com opbject ausgelegt werden muss in Delphi. Somit ist deine Anwendung und die fremd DLL jederzeit in der lage sich zu aktualisieren. Gehe davon aus das du dann eine Meldung bekommst Interface nicht implementiert. Wenn an IPersonU irgedetwas geändert wurde. Also es soll hier niemand mit Vb arbeiten nur am rande. IPersonU ist also ein Wrapper der sich zwichen deiner anwendung und der DLL setzt und so dafür sorgt das beide immer über das aktuelle Interface verfügen. EDIT: Zitat:
gruß Emil |
Re: Standard DLL in VB geschrieben
Naja, gerade hier hätte ich mir jetzt mal ein minimales Beispiel in Delphi und VB gewünscht, zur Verdeutlichung.
|
Re: Standard DLL in VB geschrieben
Zitat:
damit du sehen kannst das es funktioniert ? Verstehe ich jetzt nicht ganz sorry gruss Emil |
Re: Standard DLL in VB geschrieben
Weiss ich auch nicht, was ich haben möchte.
^--- Vielleicht ein E :) Hier und im anderen Thread wird immer nur beschrieben das es geht oder das das blödsinn ist. Aber wie muss es richtig aussehen, wie ist es sinnvoll und funktionsfähig. Das wird hier nie beschrieben. Naja, ich weiss auch nicht was ich mir vorgestellt habe. Ist auch nicht so wichtig... |
Re: Standard DLL in VB geschrieben
Dll mit VB dass ist echt ein Ding! Klassse :thumb: Grüße // Martin
PS: Dieses VB ist regelmäßig totgesagt und taucht immer wieder auf... |
Re: Standard DLL in VB geschrieben
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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