![]() |
Re: Wenn of object, dann knallts!!!
Zitat:
Ja, TForm1. |
Re: Wenn of object, dann knallts!!!
Ich kann mir es zwar nicht richtig vorstellen, aber spielt Dir die Referenzzählung von ADsItem vielleicht einen Streich? Kannst Du mal einen stinknormalen String an Deine Callback übergeben?
Lutz |
Re: Wenn of object, dann knallts!!!
Gleich nochmal ich. Besser noch, mal alles auskommentieren und nur die Callback mit einem String aufrufen.
Lutz |
Re: Wenn of object, dann knallts!!!
Zitat:
|
Re: Wenn of object, dann knallts!!!
Kannst Du mal den Aufruf für
GetLDAPDomains posten? Lutz |
Re: Wenn of object, dann knallts!!!
Das habe ich doch schon?!.. wie ich aber sehe, konzentriert ihr euch zu fest auf die Thematik Callback... Das Problem tritt aber auch anders auf,
deshalb habe ich die Methode jetzt umgeschrieben: Also nochmals von vorne... Ich habe diese Funktion:
Delphi-Quellcode:
Wenn ich im Programm z.B. die Funktion so aufrufe:
function GetLDAPDomain: String;
var NSContainer : IADsContainer; Enum : IEnumVariant; hr : integer; varArr : OleVariant; lNumElements : ULONG; ADsItem : IADs; begin NSContainer := nil; Enum := nil; ADsGetObject( 'LDAP:', IID_IADsContainer, NSContainer); hr := ADsBuildEnumerator(NSContainer, Enum); while SUCCEEDED(hr) do begin hr := ADsEnumerateNext(Enum, 1, varArr, lNumElements); if (lNumElements<=0) then Break; IDispatch(varArr).QueryInterface(IID_IADs, ADsItem); result := result + ADsItem.ADsPath + #13; //ADsItem.Class_; end; end; public {von TForm1} myVar: String;
Delphi-Quellcode:
Sobald ich myVar direkt in FormCreate deklariere, oder ausserhalb der Klasse TForm, dann gehts... so habe ich aber von anderen Forms keinen Zugriff,,, und überhaupt, wieso sollte das ein Problem sein so wie ich es mache=????
procedure TForm1.FormCreate(Sender: TObject);
begin // es kracht schon so myVar := GetLDAPDomain; end; |
Re: Wenn of object, dann knallts!!!
Dann hast Du uns auf eine falsche Fährte geführt..
Ich sehe eine Reihe von potentiellen Fehlerquellen, die ich gern ausschließen würde: 1. erste Zeile: Result := ''; 2. ADsGetObject liefert ein S_OK zurück, bitte auswerten 3. bei den anderen Funktionen bitte auch Rückgabewert auswerten Lutz |
Re: Wenn of object, dann knallts!!!
Erstmal sorry für die Irreführung...
Hab die Funktion nun ein wenig angepasst:
Delphi-Quellcode:
geht trotzdem nicht. Komisch ist ja, dass die Funktion das erwartete Resultat zurückgibt, wenn das result allerdings in eine Variable von einer Klasse gespeichert werden soll, gehts nicht. Bei einer Prozedur Variable klappts ja prima...
function GetLDAPDomain: String;
var NSContainer : IADsContainer; Enum : IEnumVariant; hr : integer; varArr : OleVariant; lNumElements : ULONG; ADsItem : IADs; begin Result := ''; NSContainer := nil; Enum := nil; if ADsGetObject( 'LDAP:', IID_IADsContainer, NSContainer) = S_OK then begin hr := ADsBuildEnumerator(NSContainer, Enum); while SUCCEEDED(hr) do begin hr := ADsEnumerateNext(Enum, 1, varArr, lNumElements); if (lNumElements<=0) then Break; if IDispatch(varArr).QueryInterface(IID_IADs, ADsItem) = S_OK then result := result + ADsItem.ADsPath + #13; end; end; end; ich kreigs nicht raus?! >> Ich würd auch gerne
Delphi-Quellcode:
verwenden, doch dann krachts auch beim speichern in eine Prozedurvariable... ??!?
if Enum <> nil then
hr := ADsFreeEnumerator(Enum); VariantClear(varArr); |
Re: Wenn of object, dann knallts!!!
Bei mir läuft's ohne Fehler durch. Allerdings ist bei mir lNumElements 0. Damit reduziert sich der Fehler auf die beiden Zeilen
Delphi-Quellcode:
Lutz
if IDispatch(varArr).QueryInterface(IID_IADs, ADsItem) = S_OK then
result := result + ADsItem.ADsPath + #13; [edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit] |
Re: Wenn of object, dann knallts!!!
Hmmm... Hab mir eine DummyFunktion gebastelt:
Delphi-Quellcode:
und habe dabei festgestellt: Das Problem existiert auch so!
function test: String;
var NSContainer : IADsContainer; begin result := 'test'; NSContainer := nil; ADsGetObject( 'LDAP:', IID_IADsContainer, NSContainer); then Du hast es bei dir getestet? -> hast du auch versucht den Rückgabewert in eine public oder private Variable von TForm1 zu speichern? denn da krachts bei mir... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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-2025 by Thomas Breitkreuz