![]() |
string in unicode konvertieren und an Api-Funktion übergeben
Hi christian
die konvertierung klappt immer noch nicht. Ich muß den string in unicode konvertieren und dann als PChar an eine Api-fuktion übergeben. Von der Api-funktion bekomme ich die Fehlermeldung Fehlernummer/Fehlermeldung/Name "1780 / A null reference pointer was passed to the stub./ RPC_X_NULL_REF_POINTER Das heißt, daß nichts übergeben wird,oder? kannst du mir helfen? Hier der Quellcode:
Delphi-Quellcode:
[edit=Christian Seehase]Delhpi-Tags ergänzt, bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
const
Parameter: array[0..4] of string = ('Peter-Pan', 'Hans-Klaus', 'OU=Heinz-DE,DC=Petra,DC=Karl,DC=net', 'Anton.Karl-Verena', 'Claudia'); var UebergabeParam: array[0..4] of PWideChar; HilfsVariable: array[0..4] of PWideChar; aServer, aDomain, aSub, aAccount, aPassword: PWideChar; begin for i := 0 to 4 do begin HilfsVariable[i] := AllocMem(length(Parameter[i]) * 2); try UebergabeParam[i] := StringToWideChar(parameter[i], HilfsVariable[i], length(Parameter[i]) * 2); finally FreeMem(HilfsVariable[i], length(Parameter[i]) * 2); end; end; end; |
Re: string in unicode konvertieren und an Api-Funktion überg
Delphi-Quellcode:
var
PW: PWideChar; W: WideString; begin // Delphi macht die Umwandlung automatisch W := 'ein AnsiString'; // nun den PWideChar dazu PW := PWideChar(W); APIFunktion(PW); |
Re: string in unicode konvertieren und an Api-Funktion überg
Moin Steppo,
um welche API Funktion geht's denn? Wenn die wirklich einen PChar braucht, und Du einen PWideChar übergibst wäre es verständlich, dass das schief geht. |
Re: string in unicode konvertieren und an Api-Funktion überg
Ich brauche die Api-funktion "NetJoinDomain".
Delphi-Quellcode:
und noch eine Frage!
function NetJoinDomain(lpServer, lpDomain, lpAccountOU, lpAccount, lpPassword:
PChar; fJoinOptions: Integer): Integer; stdcall; external 'Netapi32.dll' name 'NetJoinDomain'; wie definieren ich die FJoinOptions. gebe im Moment nur den Integerwert der zu benutzenden Optionen an: fJoinOptions [in] Specifies a value that contains a set of bit flags defining the join options. This parameter can be one or more of the following values. Value Meaning NETSETUP_JOIN_DOMAIN Joins the computer to a domain. If this value is not specified, joins the computer to a workgroup. NETSETUP_ACCT_CREATE Creates the account on the domain. NETSETUP_WIN9X_UPGRADE The join operation is occurring as part of an upgrade of Windows Me/98/95. NETSETUP_DOMAIN_JOIN_IF_JOINED Allows a join to a new domain even if the computer is already joined to a domain. NETSETUP_JOIN_UNSECURE Performs an unsecured join. NETSETUP_MACHINE_PWD_PASSED Indicates that the lpPassword parameter specifies a local machine account password rather than a user password. This flag is valid only for unsecured joins, which you must indicate by also setting the NETSETUP_JOIN_UNSECURE flag. If you set this flag, then after the join operation succeeds, the machine password will be set to the value of lpPassword, if that value is a valid machine password. das ganze wird dann so
Delphi-Quellcode:
übergeben.
Api_Meldung := NetJoinDomain(PChar(UebergabeParam[0]),
PChar(UebergabeParam[1]), PChar(UebergabeParam[2]), PChar(UebergabeParam[3]), PChar(UebergabeParam[4]), 0 + 1); |
Re: string in unicode konvertieren und an Api-Funktion überg
Unter
![]() |
Re: string in unicode konvertieren und an Api-Funktion überg
Ich wandele PWideChar in PChar um.
PChar(Parameter[i]); Das ergebnis ist ein leerer Speicherbereich. |
Re: string in unicode konvertieren und an Api-Funktion überg
Loes mal bitte die Widersprueche auf.
Zuerst willt du in einen PWideChar wandeln. Danach willst du NetJoinDomain aufrifen das nur mit PChar arbeitet. Nun willst du von einem PWideChar wandeln. |
Re: string in unicode konvertieren und an Api-Funktion überg
Moin Steppo,
wo hast Du denn die Deklaration her? Bei mir sieht die für den statischen Import so aus:
Delphi-Quellcode:
wobei NET_API_STATUS als DWORD deklariert ist.
// From LMJoin.h
function NetJoinDomain = function( const lpServer : PWChar; const lpDomain : PWChar; const lpAccountOU : PWChar; const lpAccount : PWChar; const lpPassword : PWChar; const fJoinOptions : DWord ) : NET_API_STATUS; stdcall; external 'netapi32.dll'; Die Funktion erwartet PWideChar und nicht PChar, also dürfen die gar nicht umgewandelt werden, wenn Du PWideChar hast. [EDIT] Es gibt auch keine ANSI Version von dieser Funktion. Das dürfte auf so ziemlich alle LM Funktionen für NTff zutreffen. [/EDIT] |
Re: string in unicode konvertieren und an Api-Funktion überg
Habe die Deklaration direkt aus der online-msdn.
So wie ich das sehe, habe ich die Funktion nicht richtig aus VB nach Delphi übertragen. entschuldigung. |
Re: string in unicode konvertieren und an Api-Funktion überg
Moin Steppo,
Zitat:
Am besten wäre es in so einem Falle nicht nach bestehenden VB Übersetzungen zu suchen, sondern direkt die C-Deklarationen für die Übersetzung zu verwenden. Ich kenn' mich jetzt mit VB nicht so gut aus, aber meines Wissens muss man da für so manche Sache ein paar mehr Verrenkungen machen um einige API Funktionen nutzen zu können. Eine Übersetzung C > PAS dürfte einfacher sein, als C > BAS > PAS ;-) Falls Du kannst (sind so ca. 360MB Vollinstallation) kannst Du Dir sonst auch mal das PSDK herunterladen, ggf. auch nur teilweise. Dann hast Du auch gleich die C Header dabei und kannst Dir auch eventuell in Delphi noch nicht enthaltene Konstanten heraussuchen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 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 by Thomas Breitkreuz