![]() |
Variable in DLL setzen
Hallo ich habe folgendes Problem.
Ich habe eine DLL geschrieben, in der DLL habe ich eine Funktion zum setzen einer Adresse. Es gibt die Funktionen:
Delphi-Quellcode:
In der DLL lege ich ein Objekt an (aObj), welches einen private Variable FRS4885Adresse besitzt
procedure Set_RS485ProtocolAdress(DataPointer:Byte); stdcall;
begin aUSS01Obj.RS485:=DataPointer; end; procedure Get_RS485ProtocolAdress(DataPointer:PByte); stdcall; begin DataPointer^:= aUSS01Obj.RS485; end;
Delphi-Quellcode:
Nun soll über Visual Basic 6 diese Adresse geändert werden über Set_RS485ProtocolAdress.
property RS485:Byte
read FRS485Adresse write setRS485; Dies klappt auch in VB.NET und in meinem Delphi Prog, aber in VB 6 scheint es nicht zu funktionieren, habt ihr da eine Ahnung (vielleicht irgendein Problem mit dem Speichermanagement...)? Vielen Dank! |
Re: Variable in DLL setzen
was heißt "scheint nicht zu funktionieren"? hast du in die dll mal debugausgaben gemacht bzw. die DLL einfach im Debugger laufen lassen? Dann siehst du was für Werte rein gegeben werden etc.
Und wie rufst du das ganze auf? Vielleicht ist die Art des Aufrufs einfach fehlerhaft. |
Re: Variable in DLL setzen
Hallo,
also die Funktion wird vom Kunden aufgerufen... und zwar so:
Delphi-Quellcode:
Wie kann man denn eine Aufrufkonvention festlegen?!
Attribute VB_Name = "Module1"
Public Zeit As Single Public Startzeit As Single Public Einheit As String Public Echo As String Public Druckrate As Single Public GPC_SOLL As String Public TPK_SOLL As String Public ALM_CMD As String Public Kanal As Integer Public Result As Integer Public Adresse As Byte Public ADR As Byte Public IST_TEMP_ALM As Single Public IST_TEMP_TPK As Single Public SOLL_TEMP_TPK As Single Public IST_DRUCK_GPC As Single Public ZUL_TEMP_DIFF As Single 'Public Zeit(20) As Single Public W_Zeit As Single Public Temp_Tol As Single Public Seriennummer As String Public Schritt As Integer Option Explicit Public Declare Sub Set_RS485ProtocolAdress Lib "USS01DLL.dll" (BVal a As Byte) Public Declare Sub Get_RS485ProtocolAdress Lib "USS01DLL.dll" (ByRef a As Byte) Public Declare Function Get_Seriennummer Lib "USS01DLL.dll" (ByRef a As String) As Integer Public Declare Function Connect Lib "USS01DLL.dll" () As Integer Public Declare Function DisConnect Lib "USS01DLL.dll" () As Integer |
Re: Variable in DLL setzen
Gibt es denn Probleme, wenn man ein Objekt anlegt in einer DLL und dann über Property die Werte ändert??
|
Re: Variable in DLL setzen
Zitat:
|
Re: Variable in DLL setzen
Ich verstehe das Problem zur Zeit auch nicht, da es bei meinen Testprogrammen funktioniert??!
|
Re: Variable in DLL setzen
So ich habe nun meine DLL mal ein Logfile erstellen lassen.
Es sieht so aus, dass über Set_RS485Protocolladress 48 (dezimal) übergeben wird und in der DLL 72 dezimal ankommt :shock: Wie kann das sein, was macht Visual Basic 6 dort an der Stelle?? Der Kunde ruft folgende Sub auf:
Delphi-Quellcode:
Wird hier eventuell eine Typkonvertierung durchgeführt???
// VB AAAARGH....
Private Sub Command1_Click() ADR = Text1.Text Result = Set_RS485ProtocolAdress(ADR) End Sub |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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