Programmabbruch durch WordApplication??
-
void __fastcall TKTPMainForm::WndProc(Messages::TMessage &Message) { // Cursor-Position bestimmen switch (Message.Msg) { case WM_SETCURSOR: { POINT P; GetCursorPos(&P); ::ScreenToClient(KTPMainForm->Handle, &P); // Umrechnung auf betreffendes Formular bezogen // anzeigen if (dragndrop) { ErzieherPanel->Left = P.x - ErzieherPanel->Width / 2 ; ErzieherPanel->Top = P.y - ErzieherPanel->Height / 2 ; LoeschX = P.x ; LoeschY = P.y ; } } } TForm::WndProc(Message) ; }
Damit lasse ich mir die aktuelle Mauszeigerposition übergeben. Meinst du sowas mit Threading-Modus?
das mit dem neuen projekt probier ich gleich aus!!
-
Gleiche Sache in einem neuen Projekt!
habe mit F7 hineingesteppt. Er geht in die Word_xp_srvr.cpp und kommt bis:
void __fastcall TWordApplication::InitServerData() { static Oleserver::TServerData sd; sd.ClassID = CLSID_WordApplication; sd.IntfIID = __uuidof(_Application); sd.EventIID= __uuidof(ApplicationEvents3); ServerData = &sd; }
Direkt danach bringt er die Zugriffsverletzung!!
Falls es dir weiterhilft, hier, was im CDU-Fenster steht :
Word_XP_srvr.cpp.184: } 004DB418 5F pop edi 004DB419 5E pop esi 004DB41A 59 pop ecx 004DB41B 5D pop ebp 004DB41C C3 ret 004DB41D 90 nop 004DB41E 90 nop 004DB41F 90 nop
Nach Ablauf der Zeile 004DB41C C3 ret kommt der erste Zugriffsfehler!
-
MichelM schrieb:
Gleiche Sache in einem neuen Projekt!
Das ist gut. Dann liegt es an keinen Projektspezifika, wie etwa dem COM-Threading-Modell (das übrigens genau gar nichts mit Mauszeigerpositionen zu tun hat).
MichelM schrieb:
im CDU-Fenster
MichelM schrieb:
Nach Ablauf der Zeile 004DB41C C3 ret kommt der erste Zugriffsfehler!
Wo landest du, wenn du bis zu dieser Zeile ausführst und dann F7 drückst?
-
audacia schrieb:
MichelM schrieb:
im CDU-Fenster
hehe
audacia schrieb:
MichelM schrieb:
Nach Ablauf der Zeile 004DB41C C3 ret kommt der erste Zugriffsfehler!
Wo landest du, wenn du bis zu dieser Zeile ausführst und dann F7 drückst?
Ja wie wo lande ich? Ich komme bis zu dieser Zeile, und danach kommt der Fehler!
Also er bleibt etwas unter"kernel32.RaiseException:
7737E0CB 8BFF mov edi,edi"hängen. Aber ob dir das was hilft?
-
MichelM schrieb:
Ja wie wo lande ich? Ich komme bis zu dieser Zeile, und danach kommt der Fehler!
Also er bleibt etwas unter"kernel32.RaiseException:
7737E0CB 8BFF mov edi,edi"hängen. Aber ob dir das was hilft?
Es sagt mir, daß der Rücksprung fehlschlägt, weil auf dem Stack offenbar keine gültige Rücksprungadresse liegt. Das ist äußerst seltsam.
Könntest du mal nachprüfen, welche Versionsnummer deine IDE hat? (im About-Dialog, so etwas wie 14.0.3615.26342)
Und könntest du mir folgendes zur Untersuchung übermitteln:
- ein vollständiges Minimalprojekt, das das Problem auf Knopfdruck (d.h. im Event-Handler eines Buttons auf der Form) reproduziert, mit deaktivierten Laufzeit-Packages
- den kompletten Inhalt des "Debug"-Unterverzeichnisses, also die Executable, die *.tds- und *.map-Dateien und, wenn möglich, die *.obj-Dateien
?
-
Wo kann ich dir das hinschicken? an deine firmenadresse?
als rar oder zip??
So hier die Version:
Embarcadero
C++Builder
2010 Version 14.0.3513.24210
-
MichelM schrieb:
Wo kann ich dir das hinschicken? an deine firmenadresse?
Wäre eine Möglichkeit.
MichelM schrieb:
So hier die Version:
Embarcadero
C++Builder
2010 Version 14.0.3513.24210
Ganz offenbar nicht die aktuellste. Installiere mal Update 4 und 5. Ich erinnere mich, daß einige ActiveX-Probleme behoben wurden; vielleicht auch dieses?
-
Dann werd ich mal nach den Updates schauen!
Die Mail ist abgeschickt. Kannste nun zwischen rar und zip wählen
-
So das Problem habe ich höchstwahrscheinlich gelöst!
Es lag wohl daran, dass ich ein Projekt im Builder 2009 gleichzeitig mit einem Projekt im 2010er aufhatte!
Da vertragen sich wohl die Typbibliotheken nicht miteinander. Ich hatte beide offne, dass ich Codebeispiele übertragen konnte.Aber vielen Dank für die Mühe!
-
MichelM schrieb:
Die Mail ist abgeschickt. Kannste nun zwischen rar und zip wählen
Ich habe mir das mal angesehen, und interessanterweise weicht der Code, der bei dir für word_xp_srvr.cpp generiert wurde, von meinem ab. Bei dir steht
word_xp_srvr.cpp.183: ServerData = &sd; 0040446A 8B45FC mov eax,[ebp-$04] 0040446D C74034C81E5000 mov [eax+$30],$00501ec8
, bei mir steht aber
word_xp_srvr.cpp.183: ServerData = &sd; 0040446A 8B45FC mov eax,[ebp-$04] 0040446D C74034C81E5000 mov [eax+$34],$00501ec8
.
Der wahrscheinlichste Grund dafür: du hast versucht, deine mit C++Builder 2010 übersetzte Anwendung mit einer .lib- oder .obj-Datei zu verknüpfen, die mit C++Builder 2009 erstellt wurde. Nicht verwunderlich, daß das nicht klappt - in diesem Fall führten Abweichungen im Objektlayout zu einem Laufzeitfehler.
-
also ich habe das nicht versucht! wenn dann wars der Builder
ich habe wie immer nur auf den grünen Pfeil geklickt
Aber ich konnte heute den ganzen Tag schon super mit der Wordkomponente arbeiten ohne Fehler! Da muss es wohl an den Bibliotheken gelegen haben.
Ich werde jetzt auch nur noch den 2009er ODER den 2010er offen haben!
-
So, ich muss das erstmal wieder zurücknehmen!
Ich habe den Fehler wieder. Und zwar taucht er auf, wenn ich den Haken bei Laufzeit-Packages verwenden wegnehme!
Der war gesetzt und deshalb ging das anscheinend! Wenn ich nämlich den Haken wieder setze, funktionierts wieder.Die WordApplication-Komponente habe ich jetzt in ein Datenmodul gepackt, und der Fehler taucht beim Erstellen des Datenmoduls bzw. beim Erstellen der WordApp auf!
Kann es später Probleme geben, wenn ich den Haken gesetzt lasse? Hier wird ja oft im Forum empfohlen, den Haken rauszunehmen ...
-
MichelM schrieb:
Hier wird ja oft im Forum empfohlen, den Haken rauszunehmen ...
Nö, das ist nur die Standardantwort auf das vielgefragte "warum verlangt mein Programm auf anderen Rechnern nach zusätzlichen DLLs?". Laufzeit-Packages sind gar kein Problem, wenn du die DLLs (bzw. die BPLs) einfach mit auslieferst.
Ich habe dir außerdem bereits gesagt, was den Fehler verursachen kann. Da sind zwei mögliche Gründe:
- C++Builder 2010 RTM könnte einen Bug gehabt haben, der in einem Update behoben wurde. Hast du inzwischen die aktuellsten Updates installiert?
- Du linkst mit einer word_xp_srvr.cpp, die mit C++Builder 2009 übersetzt wurde.