AGB  ·  Datenschutz  ·  Impressum  







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

dll einbinden / Pointer Probleme

Ein Thema von Pow3rus3r · begonnen am 17. Apr 2012 · letzter Beitrag vom 25. Apr 2012
Antwort Antwort
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#1

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 07:21
So, der Verbindungsaufbau funktioniert nun endlich. Es lag an einem falschen Datentyp bei der IP Adresse. Dort habe ich nun einen Ansistring verwendet.

Nun stehe ich aber schon vor dem nächsten Problem. In der DLL gibt es eine Funktion, die folgende Struktur füllt und dann über einen Pointer ausgelesen werden soll:

typedef struct COM_Version
{
u08 Major;
u08 Minor;
u08 Patch;
u08 Build;
} COM_Version;


u08 steht dabei für unsigned char.
Welchen Datentyp kann ich hier in Delphi verwenden, um diese Daten auszulesen? Ich denke, es muss in irgendeiner Weise ein Array verwendet werden, oder? Mit Datentyp char funktioniert es in Delphi leider nicht (Zugriffsverletzung).
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 07:56
Versuch einmal:
Delphi-Quellcode:
type
  TCOM_Version = packed record
    Major,
    Minor,
    Patch,
    Build: Byte;
  end;
Ggf. musst Du die Felder in umgekehrter Reihenfolge deklarieren, kommt darauf an, wie sie befüllt werden.
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 Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 07:58
Wie wäre es mit einem Array of Byte?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#4

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 09:34
ich habe die type Definition nun in Delphi so übernommen - aber es tat sich leider nichts. Immernoch Zugriffsverletzung.

Der Code sieht nun wie folgt aus (Typedeinition nicht mit inbegriffen):
Delphi-Quellcode:
function COM_GetVersionReq(var zeiger:Pointer; version:TCOM_Version): NativeUInt ; cdecl; external 'HwCom.dll';

procedure TForm1.btngetversionClick(Sender: TObject);
var
  typevers: TCOM_Version;
begin
  return := COM_GetVersionReq(zeiger, typevers);
end;
Die public Variable Zeiger wurde schon von einer anderen Funktion (COM_TcpOpen) gefüllt.

Typevers istd er Rückgabewert, den die Funktion liefern soll. Müsste ich hier evtl. wieder einen Pointer auf die Variable "typevers" setzen, um den Wert von der Funktion bekommen zu können?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 09:36
Ich rate einmal ins Blaue:
return := COM_GetVersionReq(zeiger, @typevers);
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
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#6

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 12:08
leider nicht. Immernoch "Zugriffsverletzung bei Adresse xyz. Schreiben von Adresse abc aufgetreten".

Hmm, Klingt fast danach, als wollte die Funktion was reinschreiben, wird aber durch irgend einen Grund daran gehindert, oder?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 12:47
Wie sieht denn der Original-Aufruf aus?
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
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#8

AW: dll einbinden / Pointer Probleme

  Alt 24. Apr 2012, 13:00
Der Originalaufruf sieht so aus:
Code:
//---------------------------------------------------------------------------
// Example of an implementation of a COM_GetVersionReq call
//---------------------------------------------------------------------------

void CHwComTestGuiDlg::OnBnClickedButtonGetversion()
{
    COM_Version version;
    if (COM_RETURN_OK == PrintErrorInfos("COM_GetVersionReq",COM_GetVersionReq(m_hCom,&version)))
    {
        printf("COM_Version: %d.%d.%d.%d\r\n",version.Major,version.Minor,version.Patch,version.Build);
    }
}
Sieht in meinen Augen aber sehr ähnlich aus, wie mein "Delphi-Versuch". m_hCom ist das Handle, welches durch die COM_TcpOpen Funktion gefüllt wurde - äquivalent meinem Delphi Programm.
  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 14: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