AGB  ·  Datenschutz  ·  Impressum  







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

Variable in DLL setzen

Ein Thema von DelphiManiac · begonnen am 22. Apr 2008 · letzter Beitrag vom 22. Apr 2008
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Variable in DLL setzen

  Alt 22. Apr 2008, 10:50
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:
procedure Set_RS485ProtocolAdress(DataPointer:Byte); stdcall;
begin
  aUSS01Obj.RS485:=DataPointer;
end;

procedure Get_RS485ProtocolAdress(DataPointer:PByte); stdcall;
begin
  DataPointer^:= aUSS01Obj.RS485;
end;
In der DLL lege ich ein Objekt an (aObj), welches einen private Variable FRS4885Adresse besitzt
Delphi-Quellcode:
    property RS485:Byte
      read FRS485Adresse write setRS485;
Nun soll über Visual Basic 6 diese Adresse geändert werden über Set_RS485ProtocolAdress.

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!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Variable in DLL setzen

  Alt 22. Apr 2008, 10:55
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#3

Re: Variable in DLL setzen

  Alt 22. Apr 2008, 11:04
Hallo,

also die Funktion wird vom Kunden aufgerufen...

und zwar so:

Delphi-Quellcode:
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
Wie kann man denn eine Aufrufkonvention festlegen?!
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: Variable in DLL setzen

  Alt 22. Apr 2008, 11:20
Gibt es denn Probleme, wenn man ein Objekt anlegt in einer DLL und dann über Property die Werte ändert??
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Variable in DLL setzen

  Alt 22. Apr 2008, 11:23
Zitat von DelphiManiac:
Gibt es denn Probleme, wenn man ein Objekt anlegt in einer DLL und dann über Property die Werte ändert??
Nö, solange es 32bit-Werte sind (du könntest ja mal probehalber von Byte auf DWORD wechseln) und du nicht den Instanzzeiger hin und her übergibst.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#6

Re: Variable in DLL setzen

  Alt 22. Apr 2008, 11:26
Ich verstehe das Problem zur Zeit auch nicht, da es bei meinen Testprogrammen funktioniert??!
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#7

Re: Variable in DLL setzen

  Alt 22. Apr 2008, 13:20
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

Wie kann das sein, was macht Visual Basic 6 dort an der Stelle??

Der Kunde ruft folgende Sub auf:
Delphi-Quellcode:
// VB AAAARGH....
Private Sub Command1_Click()
    ADR = Text1.Text
    Result = Set_RS485ProtocolAdress(ADR)
End Sub
Wird hier eventuell eine Typkonvertierung durchgeführt???
  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 08:59 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