Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String an VB Dll übergeben geht nicht (https://www.delphipraxis.net/149303-string-vbulletin-dll-uebergeben-geht-nicht.html)

Primus 18. Mär 2010 13:21


String an VB Dll übergeben geht nicht
 
Hallo Zusammen,

ich stehe hier gerade vor dem Problem an unsere Serviceapplication ein externes Dokumentenmanagement anzubinden.
Eigentlich kein Problem, da es eine gut Dokumentierte Schnittstelle per VB-Dll gibt, leider hab ich das Problem
das ich keinen String an die Dll übergeben kann.

Zuersteinmal hier die VB Deklaration:

Declare Function FindDoc Lib "MACRODLL.DLL" (ByVal Suchstr$, ByRef DocIdString$) As Long

Hier nun die Delphi Variante

Delphi-Quellcode:
 function FindDoc(pSQLCommand,ppDocumentID:pchar):longint; stdcall; external 'Macrodll.dll';

procedure TfrmKaufvertragsinformation.Button1Click(Sender: TObject);
var
 SQLString : PChar;
 result,FileId,FilePath,FileTypeName,FileName,p :pchar;
 Handle:integer;
begin
 LoginAuthDip('ABCD',False);
 SQLString := 'KDNR = ''B79568''';

 if FindDoc(SQLString,result) >0 then
 begin
  Handle := OpenDoc(result);
  if Handle > 0 then
 begin
   FindFirstFileID(Handle,FileId);
   GetProxessFile(Handle,FileId,FilePath,FileTypeName,FileName);
   Showmessage(FilePath+' '+FileName);
   CloseDocUnsaved(Handle);
 end;
end;
Von dem SQLStrig kommt bei der Dll nur ein 'K' an. Und das verstehe ich garnicht...

Hat jemand ne Idee oder hab ich jetzt nur nen Brett vor dem Kopf und sehe das warscheinlichste nicht?

Danke schon mal,

Primus

hoika 18. Mär 2010 13:28

Re: String an VB Dll übergeben geht nicht
 
Hallo,

(ByVal Suchstr$, ByRef DocIdString$)

Also einmal ByVal, einmal ByRef
bei dir stehen zweimal PChar

Schau mal hier
1



Heiko

Primus 18. Mär 2010 13:48

Re: String an VB Dll übergeben geht nicht
 
Hallo,

also das mit dem ByVal und ByRef hab ich gesehen.

Aber es müssen doch beises laut Doku strings sein.
Das Problem was ich hab ist das der erste wert als SQL String nur als einzelner Buchstabe in der Dll ankommt.

Gruß Primus

DeddyH 18. Mär 2010 13:51

Re: String an VB Dll übergeben geht nicht
 
Du hast ja auch keinen Speicher für die Variable result reserviert.

[edit] Achnee, die andere war ja schon das Problem [/edit]

Primus 18. Mär 2010 14:17

Re: String an VB Dll übergeben geht nicht
 
So habe jetzt mal mit GetMem den Speicher für Result reserviert.

Leider beomme ich noch immer keine Werte rüber.
Es kommt nach wie vor nur ein K auf seiten der Dll an.

Irgendwie ist mir das gerade ne nummer zu hoch.

DeddyH 18. Mär 2010 14:38

Re: String an VB Dll übergeben geht nicht
 
[edit] Ich hatte Blödsinn gepostet! Du hast ja Delphi 2009, d.h. Unicode. Nimm statt String einmal AnsiString, statt PChar PAnsiChar und statt Char AnsiChar. [/edit]

Primus 18. Mär 2010 15:04

Re: String an VB Dll übergeben geht nicht
 
Oh mann das ist ja Peinlich da hätte ich auch selbst drauf kommen können.
Per pAnsiChar läuft alles wunderbar!
Sag ja sehe den Wald vor lauter Bäumen nicht..

Vielen Dank

DeddyH 18. Mär 2010 15:05

Re: String an VB Dll übergeben geht nicht
 
Naja, ich hätte ja auch früher einen Blick auf Deine Signatur werfen können :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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