AGB  ·  Datenschutz  ·  Impressum  







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

thiscall calling convention

Ein Thema von Sunec · begonnen am 15. Aug 2015 · letzter Beitrag vom 16. Aug 2015
Antwort Antwort
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#1

thiscall calling convention

  Alt 15. Aug 2015, 19:44
Delphi-Version: 5
Ich muss momentan nicht statische C++ Methoden aufrufen.

Dafür gibt es die thiscall calling convention.

Leider kennt Delphi diese nicht

Also muss man manuell nachhelfen und die Parameter auf den Stack pushen.
Delphi-Quellcode:
asm
    mov ecx, meinKlassenPointer
end;
Das klappt soweit und die Funktionen liefern den richtigen Wert (endlich).

Gibt es da einen besseren Weg das ganze zu realisieren?

Momentan rufe ich vor jedem Funktionsaufruf diesen asm block mit dem jeweiligen Klassenpointer auf. Kann ich das "automatisieren"?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: thiscall calling convention

  Alt 15. Aug 2015, 22:28
Mal ne Frage kannst du hier nicht mit Vtbl arbeiten anstelle von ASM?
Bin mir aber jetzt nicht sicher ob ich dich richtig verstanden habe.


gruss

Geändert von EWeiss (15. Aug 2015 um 23:14 Uhr)
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#3

AW: thiscall calling convention

  Alt 16. Aug 2015, 04:50
Du meinst die Methoden als virtual zu kennzeichnen?

Hab ich leider auch schon vergeblich versucht. Die Funktion liefert ohne den asm "Schnipsel" den falschen Rückgabewert.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: thiscall calling convention

  Alt 16. Aug 2015, 11:46
Zitat:
Du meinst die Methoden als virtual zu kennzeichnen?
Nein Ich meine TDispatchableVtbl.

gruss
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#5

AW: thiscall calling convention

  Alt 16. Aug 2015, 13:43
Zitat:
Du meinst die Methoden als virtual zu kennzeichnen?
Nein Ich meine TDispatchableVtbl.

gruss
Da ich davon noch nie gehört habe, hab ich mal das G von Alphabet befrage:
http://foren.activevb.de/cgi-bin/for...msg=404151&id=

Allerdings keine Ahnung wie mir das weiterhelfen soll
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: thiscall calling convention

  Alt 16. Aug 2015, 14:17
Zitat:
Du meinst die Methoden als virtual zu kennzeichnen?
Nein Ich meine TDispatchableVtbl.

gruss
Da ich davon noch nie gehört habe, hab ich mal das G von Alphabet befrage:
http://foren.activevb.de/cgi-bin/for...msg=404151&id=

Allerdings keine Ahnung wie mir das weiterhelfen soll
Du hast aber schon gelesen ?
stdcall; // Microsoft's thiscall (ecx = this)

und das du den Pointer deiner nicht statischen C++ Methode
hier geliefert bekommst?
AReturn : Pointer; // Pointer to buffer of return value

Von daher dachte ich das es dir vielleicht helfen könnte (andere Methode halt)
Wenn nicht gut dann habe ich wohl was falsch verstanden.
Kein Beinbruch meinerseits.

gruss
  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 15:49 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 by Thomas Breitkreuz