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
Benutzerbild von cherry
cherry

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

Re: Wenn of object, dann knallts!!!

  Alt 16. Nov 2009, 13: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
 
#2

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 17: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
 
#3

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 18: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 18:30 Uhr)
  Mit Zitat antworten Zitat
ele

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

AW: Wenn of object, dann knallts!!!

  Alt 21. Mai 2012, 19:08
Wenn ich das richtig verstehe, dann ist safecall hauptsächlich für COM wichtig. Für alle anderen Windows-API funktionen ist stdcall zu benutzen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:18 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