export & var
Har fått en specifikation på ett dll-interface som jag tror är skrivet i Delphi.
Specifikationen ser ut så här:
function ImportedFunction(const inputdata: pchar; var outputdata: pchar): boolean; export; stdcall;
(Jag skall alltså skriva en dll innehållande ovanstående funktion som anropas från ett delphiprogram)
Någon som kan förklara hur "var" fungerar här?
Innebär det att jag får en pekare till en strängbuffert eller att jag skall returnera en pekare till en. Om det är det senare, avallokeras minnet?
Det här är min C++ tolkning:
__declspec(dllexport) bool __stdcall ImportedFunction(const char* inputdata, char*& outputdata);
Svara
Sv: export & var
Ja det ser lite mystiskt ut. <var> är ju ett reseverat ord och betyder helt enkelt variabel.
Man deklarerar helt enkelt att outputdata skall vara pchar,
dvs en pekare till en nullterminated sträng. C och C++ datastruktur.
Du skall skicka en pekare som andra argument.Det första argumentet blir tydligen en Constant
Dvs du skickar två pekare till två olika strängbuffrar. Funktionen returnerar (Exporterar) Boolean
Svara
Sv:export & var
>Du skall skicka en pekare som andra argument.Det första argumentet blir tydligen en Constant
>Dvs du skickar två pekare till två olika strängbuffrar. Funktionen returnerar (Exporterar) Boolean
Men jag sitter ju i andra ändan. Jag skall skapa en dll som innehåller ovanstående funktion. Anropet sker från ett program som jag inte har tillgång till.
Jag trodde var betydde att det är en referensparameter men har sagt ingen aning om strängar fungerar i delphi.
Svara
Sv: export & var
Jag är också osäker.
PChar i Delphi är samma sak som nullterminated sträng i C konvension.
Sitter och funderar på om man kanske skickar pekare till hela Functionen.
Jag spånar inte mer hoppas någon expert loggar in.
Skall du skriva om hela DLL:en i C eller skall du använda den befintliga Delphi. ?
<b>men har sagt ingen aning om strängar fungerar i delphi.</b>
Om du använder PChar funkar det exakt som i C
type PChar = ^Char Nullterminated string
Svara
Sv:export & var
Så här kan jag också skriva.
Om jag skulle ha använt den Delphi dll:en från VB
skulle jag skicka 2 String-argument ByReference.
En Constant från mitt VB och en String
Svara
Sv: export & var
Det är en Delphi dll.
Den vill ha en pchar som input och returnerar en outputdata som en pchar. Deklarera outputdata som en pchar och anropa funktionen!
Svara