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 3 von 4     123 4      
Delphianer

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

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 16:45
Sorry, es kracht doch. Abhilfe könnte aber vielleicht die Zeile

CoInitialize(nil);

schaffen.

Lutz
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

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

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 16:49
Ne, macht ja auch keinen Sinn... soweit ich weiss ist das schon initialisiert wenn on Create aufgerufen wird..
Also ich habs auch getestet, geht nicht.

Ist aber schon krass komisch oder?
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
 
#23

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 17:17
Sind Deine Funktionsprotypen stdcall oder safecall?

Lutz
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

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

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 17:33
ich verwende die units von agnisoft...
http://www.agnisoft.com/white_papers..._directory.asp

safecall !
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#25

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 17:53
Moin moin,

versuche doch mal bitte, Result erst nach dem "nil setzen" zu zuweisen, also so:
Delphi-Quellcode:
function GetLDAPDomain: String;
var
  NSContainer : IADsContainer;
  Enum : IEnumVariant;
  hr : HRESULT;
  varArr : OleVariant;
  lNumElements : ULONG;
  ADsItem : IADs;
  res : String;
begin
  res := '';
  NSContainer := nil;
  Enum := nil;
  try
    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
          res := res + ADsItem.ADsPath + #13;
      end;
    end;
  finally
    Enum := nil;
    NSContainer := nil;
    Result := res;
  end;
end;
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Delphianer

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

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 18:58
Langsam gehen mir die Ideen aus.

Bei Kosch habe ich einen abweichenden Funktionsprototypen gefunden:

function ADsGetObject(lpszPathName: PWideChar; const riid: TGUID; out ppObject): HRESULT; Safecall; Und dann noch diesen Artikel:

http://www.mail-archive.com/delphi@d.../msg14930.html

Ob das allerdings auch für Delphi2009 gilt?

Lutz
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

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

Re: Wenn of object, dann knallts!!!

  Alt 12. Nov 2009, 20:10
dann bin ich ja wohl nicht der einzige mit diesem Problem. Hehe.
Danke euch beiden. Ich habe jetzt Wochenende und Zuhause hab ich leider weder D2009 noch meine Projektdaten, also kann ich wohl oder übel die Test erst nächsten Montag durchführen.

Ich melde mich dann mit neuigkeiten, hats bei euch geklappt?

lg und schönes Wochenende...
#enemyleft
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

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

Re: Wenn of object, dann knallts!!!

  Alt 16. Nov 2009, 14:03
@x000x, @Delphianer

Das funktionert leider alles nichts, das Ergebnis ist immer dasselbe!
Bringts denn niemand zum laufen?

@x000x: Witzig ist ja, dass ich am Ende z.B. schreiben kann result := 'test'; und es passiert immer noch dasselbe Problem...

Was ist hier bloss faul?

Na, bringst Du es zum laufen?

EDIT:// Ich bin echt am Ende meiner Nerven! Wenn ich das ganze nicht im FormCreate oder FormShow der MainForm habe, sondern in FormCreate einer anderen Form, dann klappts ohne Einwände. Nur wenn ich AdsFreeEnumerator Verwenden will tritt dann der Fehler noch auf. Ich schiebs jetzt mal auf Microsoft ab und begnüge mich mit dem Workaround. Obwohl ich damit eigentlich nicht ganz glücklich bin.

Wenn also noch jemand eine Idee hat, bin ich immer noch sehr dankbar dafür. Habe übrigens im Internet viele ähnliche Threads gefunden, nur gelöst wurde er noch nie!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#29

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 18:59
Hallo,

Entschuldigung wenn ich hier einen alten Thread aufwärme...

Aber ich hatte eben das selbe Problem und ich glaube eine Lösung gefunden zu haben.

Das Problem lag an der Deklaration der Funktion ADsGetObject():

Delphi-Quellcode:
function ADsGetObject(lpszPathName:WideString; const riid:TGUID;
                      out ppObject):HRESULT; safecall; external 'activeds.dll';
Nach langem debuggen und pröbeln habe ich die deklaration abgeändert und siehe da: Keine AV mehr.

Delphi-Quellcode:
function ADsGetObject(lpszPathName:WideString; const riid:TGUID;
                      out ppObject):HRESULT; stdcall; external 'activeds.dll';
stdcall ist das Schlüsselwort.

Ich hoffe es hilft, auch wenn der Threaderzeuger schon längs nicht mehr an diesem Projekt arbeiten sollte...
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#30

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 19:25
Mal zurück zur ersten Codeversion: Wie rufst du diese Funktion auf?
Zeig mir die Zeile!

Edit:
Och...
Klar -.-'
Bei Stdcall werden alle Parameter verkehrt herum auf den Stack gepusht, wohingegen bei der anderen Variante Register verwendet werden. Kehrt ADsGetObject zurück und beendet mit Ret X so poppt es wertvolle Register vom Stack, die es nicht darf (per SafeCall Deklaration), jedoch trotzdem tut (weil StdCall). Dadurch kommt es zu Problemen mit der Rücksprungsadresse die vor jeder Unterroutinenaufruf (SubProgramCall) auf den Stack gepusht wird...
Ach ach...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (21. Mai 2012 um 19:30 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 19:35 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