AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi string in unicode konvertieren und an Api-Funktion übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

string in unicode konvertieren und an Api-Funktion übergeben

Ein Thema von steppo · begonnen am 2. Okt 2003 · letzter Beitrag vom 2. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

string in unicode konvertieren und an Api-Funktion übergeben

  Alt 2. Okt 2003, 10:54
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:
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;
[edit=Christian Seehase]Delhpi-Tags ergänzt, bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 11:12
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);
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 11:13
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 12:32
Ich brauche die Api-funktion "NetJoinDomain".

Delphi-Quellcode:
function NetJoinDomain(lpServer, lpDomain, lpAccountOU, lpAccount, lpPassword:
  PChar; fJoinOptions: Integer): Integer; stdcall; external
'Netapi32.dllname 'NetJoinDomain';
und noch eine Frage!
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:
Api_Meldung := NetJoinDomain(PChar(UebergabeParam[0]),
    PChar(UebergabeParam[1]), PChar(UebergabeParam[2]),
    PChar(UebergabeParam[3]), PChar(UebergabeParam[4]), 0 + 1);
übergeben.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 13:08
Unter http://www.delphi-jedi.org/Jedi:APILIBRARY ist die grosse Win32 Konversion von Marcel van Brakel erhaeltlich.
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 14:02
Ich wandele PWideChar in PChar um.

PChar(Parameter[i]);

Das ergebnis ist ein leerer Speicherbereich.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 14:10
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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 14:13
Moin Steppo,

wo hast Du denn die Deklaration her?

Bei mir sieht die für den statischen Import so aus:

Delphi-Quellcode:
// 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';
wobei NET_API_STATUS als DWORD deklariert ist.

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]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 14:30
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.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: string in unicode konvertieren und an Api-Funktion überg

  Alt 2. Okt 2003, 14:37
Moin Steppo,

Zitat von Steppo:
So wie ich das sehe, habe ich die Funktion nicht richtig aus VB nach Delphi übertragen.
entschuldigung.
Ist ja nicht schlimm.

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:36 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