Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hex to String (https://www.delphipraxis.net/111813-hex-string.html)

XXcD 11. Apr 2008 11:11

Re: Hex to String
 
Hab jetzt noch eine Frage dazu, kann ich auch irgendwie die function aus VB in Delphi direkt benutzen?
Entweder den VB Code zu einem Delphi code convertieren, oder in VB eine DLL schreiben und die dann in Delphi einbinden.

Also mit dem COnverter weiß ich garnicht ob es sowas gibt und die DLL habe ich schon gemacht.

VB DLL:

Public Function HexToString(sMessage As String) As String
Dim i As Integer
For i = 1 To Len(sMessage) Step 2
HexToString = HexToString & Chr(Int("&h" & Mid(sMessage, i, 2)))
Next
End Function


Delphi Code:
Delphi-Quellcode:
function StringToHex(sMessage: string): string; stdcall;
external 'dll.dll';
Wenn ich die Anwendung starte wird mir direkt ne Fehlermeldung rausgegeben, dass die Funktion StringToHex in der dll.dll nicht gefunden wurde.

Muetze1 11. Apr 2008 11:17

Re: Hex to String
 
Zitat:

Zitat von XXcD
Also mit dem COnverter weiß ich garnicht ob es sowas gibt und die DLL habe ich schon gemacht.

Ich bin erstaunt, dass VB überhaupt DLLs erstellen kann. Aber du kannst definitiv diese Funktion in Delphi genauso nachbilden, somit ist die Frage ob sich der Aufwand auch nur ansatzweise lohnt.

Zitat:

Zitat von XXcD
VB DLL:

Public Function HexToString(sMessage As String) As String
Dim i As Integer
For i = 1 To Len(sMessage) Step 2
HexToString = HexToString & Chr(Int("&h" & Mid(sMessage, i, 2)))
Next
End Function


Delphi Code:
Delphi-Quellcode:
function StringToHex(sMessage: string): string; stdcall;
external 'dll.dll';
Wenn ich die Anwendung starte wird mir direkt ne Fehlermeldung rausgegeben, dass die Funktion StringToHex in der dll.dll nicht gefunden wurde.

Naja, hier postest du eine Funktion HexToString() und versuchst aber eine StringToHex() einzubinden. Das könnte Windows vllt. nicht auf Anhieb erkennen, dass es das gleiche sein soll.

Meinen Beitrag von zuvor beachtet? Oder einfach totschweigen da es doch einen illegalen Hintergrund hat?

XXcD 11. Apr 2008 11:49

Re: Hex to String
 
Ohh Sorry war nur nen schreibfehler von mir ich meine natürlich StringToHex.
Also in meinem Programm habe ich schon alles richtig war nur im Forum falsch geschrieben.

Ich glaube ich habe irgendwann auch mal gelesen, dass eine compilierte DLL, egal in welche Sprache geschrieben immer gleich ist.
Also verstehe ich nicht warum das nicht funktioniert.

Luckie 11. Apr 2008 11:55

Re: Hex to String
 
Moment, heißt das dein Code befindet sich in einer DLL?

XXcD 11. Apr 2008 11:56

Re: Hex to String
 
Also Der VB Code HexToString steckt in einer DLL Datei.
Der andere Code in Delphi ist direkt meine Anwendung.

_frank_ 11. Apr 2008 12:02

Re: Hex to String
 
mit strings über Modulgrenzen hinweg zu arbeiten ist ziemlich ungünstig. Siehe auch die Hinweise im Unitkopf, wenn du versuchst, mit Delphi eine Dll zu erstellen. mal davon abgesehen vermute ich mal, dass VB Strings anders managed.
am besten du machsts wie die winapi, die verwendet
1. nur Pchar
(2. ohne out-parameter gibt es die länge des Results zurück (für speicher-reservierung))
3. die anwendung reserviert speicher und ruft die funktion mit out-Parameter (nochmal) auf

der funktionskopf würde dann so aussehen:
function (in,out:Pchar):integer;

bei HexToStr. kannst ja normal davon ausgehen, dass der Ausgabestring halb so groß ist wie der Hex-String und vice versa.

du machst es dir it der Dll zusätzlich schwer...versuhe lieber die funktion selbst auf delphi zu portieren...

btw.
Zitat:

Zitat von Muetze1
Du nimmst einen Integer mit einem Wert von 3. Diesen kannst du nun sehr schön ausgeben:

binär: 00000000 00000000 00000000 00000011
oktal: 000003
dezimal: 4
hexadezimal: 00 00 00 03

also die dezimale Darstellung erstaunt mich ein bisschen :shock: *g*

HTH Frank

XXcD 11. Apr 2008 12:06

Re: Hex to String
 
Aber wenn es daran liegt dann müsste ich doch ne Fehlermeldung kriegen wenn ich die Funktion benutze, aber ich kriege den Fehler ja beim öffnen: Der Prozedureinsprungpunkt "StringToHex" wurde in der DLL "...." nicht gefunden

_frank_ 11. Apr 2008 12:15

Re: Hex to String
 
kenn mich mit VB nicht so aus, aber wenn der Name stimmt, hast du evtl. den Export vergessen, in delphi geht das über die exports-klausel.Ohne diese wird in die dll keine Tabelle mit den Namen hinterlegt, somit sind die funktionen von außen nicht per Name anspechbar.

Gruß Frank

Muetze1 11. Apr 2008 12:40

Re: Hex to String
 
Zitat:

Zitat von _frank_
also die dezimale Darstellung erstaunt mich ein bisschen :shock: *g*

Ups, damit wollte ich das alles eigentlich machen, da aber dann nur ein Bit gesetzt ist, habe ich mich auf die drei besonnen... Nun ja, ausser dort. Es sollte natürlich auch 3 sein... :oops:

Zitat:

Zitat von XXcD
..., aber ich kriege den Fehler ja beim öffnen: Der Prozedureinsprungpunkt "StringToHex" wurde in der DLL "...." nicht gefunden

Dann schau dir doch mal die Exporte der DLL an, die du erstellt hast. Dazu kannst u.a. den Dependency Walker nutzen oder auch das TDUMP Utility von Borland, was im Pfad liegt, wenn du Delphi installiert hast.

XXcD 11. Apr 2008 12:56

Re: Hex to String
 
Ok habe bei Google alles durchsucht aber mir hat nichts weitergeholfen.
Vielleicht weiß hier ja einer wie ich das mit den Exports mache.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Seite 3 von 4     123 4      

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