AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wenn of object, dann knallts!!!

Offene Frage von "ele"
Ein Thema von cherry · begonnen am 12. Nov 2009 · letzter Beitrag vom 21. Mai 2012
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#11

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 14:56
Zitat von Delphianer:
Mal ne böse Frage..

Existiert das Objekt eigentlich, zu dem die Callback-Methode gehört?

Grüße,

Lutz

Ja, TForm1.
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 15:00
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
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#13

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 15:02
Gleich nochmal ich. Besser noch, mal alles auskommentieren und nur die Callback mit einem String aufrufen.

Lutz
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#14

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 15:04
Zitat von Delphianer:
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
So irgendwas verflixtes in der Art muss es sein, aber genau das ist es wahrscheinlich nicht. Hab mal die CBF so ausgeführt: CallBack('test'); -> selbes Problem
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#15

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 15:14
Kannst Du mal den Aufruf für

GetLDAPDomains

posten?

Lutz
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#16

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 15:22
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:
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;
Wenn ich im Programm z.B. die Funktion so aufrufe:

public {von TForm1}
myVar: String;

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  // es kracht schon so
  myVar := GetLDAPDomain;
end;
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=????
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#17

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 15:57
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
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#18

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 16:04
Erstmal sorry für die Irreführung...
Hab die Funktion nun ein wenig angepasst:

Delphi-Quellcode:
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;
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...

ich kreigs nicht raus?!

>> Ich würd auch gerne

Delphi-Quellcode:
  if Enum <> nil then
    hr := ADsFreeEnumerator(Enum);
  VariantClear(varArr);
verwenden, doch dann krachts auch beim speichern in eine Prozedurvariable... ??!?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#19

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 16:24
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:
if IDispatch(varArr).QueryInterface(IID_IADs, ADsItem) = S_OK then
        result := result + ADsItem.ADsPath + #13;
Lutz

[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#20

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 16:27
Hmmm... Hab mir eine DummyFunktion gebastelt:

Delphi-Quellcode:
function test: String;
var
  NSContainer : IADsContainer;
begin
  result := 'test';
  NSContainer := nil;
  ADsGetObject( 'LDAP:', IID_IADsContainer, NSContainer);

then
und habe dabei festgestellt: Das Problem existiert auch so!
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...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 14:29 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