Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Moin, Moin
wodurch wird die ZV den ausgelöst, ist sEditedFields = nil? Mal etwas anderes, warum fütterst du nicht ein ADSUser-Objekt und speicherst alle Änderungen auf einmal? Gruss |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Zitat:
weder
Delphi-Quellcode:
noch
if not Assigned(sEditedFields) then
ShowMessage('asdf');
Delphi-Quellcode:
Zeigen die Message an! > Ich kanns mir nicht erklären. Wahrscheinlich wird meine StringList durch die Kuriositäten von ADSI zerstört?!
if sEditedFields = nil then
ShowMessage('asdf'); Dein zweiter Vorschlag ist gut, ich werde das bei Gelegenheit so lösen. Aber ich möchte trotzdem rausfinden was hier das Problem ist! Hast du eine Idee? das gibts doch gar net! |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Zitat:
Wie kannst du dir das erklären Alter Mann? |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Habe nochmals intensiv an deiner Aussage hier:
Zitat:
Die Lösung in diesem Falle war ja, eine Dummy Funktion aufzurufen, damit nur die Funktionsvariablen verschossen werden. Nun, ich verstehe aber nicht wie das Interface überhaupt was zerstören kann. Ich übergebe ja nicht meine Variablen als Parameter, sondern nur eine Kopie dessen Werte. Wie zum Teufel soll das Interface mir dann z.B. ein Textfeld zerschiessen? Und bei meinem etwas später aufgetauchten Problem werde ich noch weniger schlau daraus. Es wird mir eine TStringList zerschossen, die nicht mal in der Dummyfunktion verwendet wird. Woher weiss das Interface überhaubt, dass ein solches Objekt vorhanden ist? -Und noch besser wieso wird es zerschossen? Ich bin momental echt am zweifeln ob es einen Sinn hat so weiter zu Programmieren?! Anscheinend eignet sich Delphi überhaupt nicht für AD sachen. Oder liegt es am AD ? ;-) |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Hi,
ich bin auch nicht der Interface-Guru, es ist aber so, dass du die Adresse übergibst an der der Inhalt deiner Variablen steht. Diese Speicheradresse wird nun von dem Interface-Objekt für die jeweilige Aktion verwenden und anschließend freigegeben. Der Vorteil, du musst dich nicht darum kümmern. Die Lösung(?) aus dem Dilemma, keine Referenzen sonder 'echte' Kopien (move(StringList.Strings[I], Str, Length(StringList.Strings[I])). Ich gebe hier nur meine Erfahrung mit ADSI wieder, bitte nicht als generelle Lösung sehen. Gruss |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Lieber Alter Mann
Ich bin froh, dass du diene Erfahrungen mit mir teilst. Ich hoffe du wirst das auch weiterhin tun. ;-) Denn ich verliere langsam aber sicher meinen Verstand, oder eben dass, was noch davon übrig geblieben ist. 1. Ich dachte wenn man bei einer Prozedur die Parameter per var übergibt ist es so wie du gesagt hast. Bei einer "normalen" übergabe, dachte ich, dass es den Wert kopiert. 2. Was ja komisch ist, ist, dass meine StringList gar nichts mit der ADSI Funktion zu tun hat. Und sie trotzdem verschossen wird. Was soll ich also einen Wert kopieren, ich übergebe ihn ja nirgens. "(move(StringList.Strings[I], Str, Length(StringList.Strings[I]))" bringt mir ja nichts, die Stringlist verwende ich weder in der Dummy Funktion noch in der eigentlichen. Ich verwende die Liste nur in der Funktion in der die Dummy Funktion verwendet wird. >>> Wieso nur wird die Liste Verschossen, hast du da auch eine plausible Erklärung? Danke schon mal ;-) |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Sag mal, ist diese Unit mit TADSManager von dir?
|
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Also, wenn bei mir soetwas passiert, dann gehe ich meist so vor:
Eliminiere alles Unnötige. D.h. extrahiere die Essenz, also das Wesentliche in ein eigenes Projekt ohne Klasse, ohne tolle Tricks und teste es dort. Die Referenzzählung kommt mir schon etwas suspekt vor, besonders da ich noch nie soetwas gesehen habe, dass nur mit NewInstance statt Create arbeitet. Insbesodere funktioniert die Referenzzählung eh nicht, da sie nie kleiner wird. Wie denn auch? Also lass mal die Klassen beiseite und teste das AD Search separat. |
Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Dabei ist nun jeglicher Komfort weg, insbesondere halt auch beim GUI... Bis jetzt hab ich es so verstanden: ADSGetObject zerschiesst mir die Parameter nachdem ADSGetObject diese nicht mehr benötigt. Dies kann man umgehen indem man die eigentliche Funktionen in DummyFunktionen ausführt. Dies führt dazu, dass nicht die eigentlichen Parameter, sondern die der Dummyfunktion zerschossen werden, somit kann ich nach dessen Betätigung immer noch auf meine Objekte zugreiffen. Dies hat eine ganze Weile funktioniert und ich habe einigermassen verstanden wieso und konnte das auch "elegant" (naja, nicht wirklich) umgehen... Jetzt aber die Ausnahme:
Delphi-Quellcode:
Es funktioniert wenn ich anschliessend nicht auf die Parameter sOldObjectPath und EdContainerPath.Text zugreiffe, wenn ich das tue gibts die alt Bekannt Zugriffsverletzung...// Benutzer verschieben if sEditedFields.IndexOf('EdContainerPath') > -1 then begin if DummyMoveUser(sOldObjectPath, EdContainerPath.Text) then txt := txt + '> Benutzer erfolgreich verschoben' // KEINE ZUGRIFFSVERLETZUNG //txt := txt + '> Benutzer erfolgreich von "'+sOldObjectPath+'" nach "'+EdContainerPath.Text+'" verschoben' // ZUGRIFFSVERLETZUNG else txt := txt + '(!) Benutzer konnte nicht verschoben werden.'; end; Ich bitte also wieder mal mehr um eure Mithilfe, denn ich frag mich langsam was mit mir los ist. Oder ob es an Delphi liegt? ich steck im Sumpf, holt mich hier raus! :-D Danke schon ma... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 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