AGB  ·  Datenschutz  ·  Impressum  







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

C-dll Speicheradressen

Ein Thema von Johannes G. · begonnen am 31. Okt 2017 · letzter Beitrag vom 6. Nov 2017
Antwort Antwort
Johannes G.

Registriert seit: 23. Aug 2017
Ort: Lustenau
16 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: C-dll Speicheradressen

  Alt 6. Nov 2017, 08:03
Super, vielen Dank!
Mein Testprogramm läuft jetzt.

Bei der Implementierung in mein Hauptprogramm habe ich aber jetzt das Problem, dass in dieser (mit class function()) deklarierter Funktion weitere proceduren und Funktionen aufgerufen werden, von denen aus weiter Funktionen aufgerufen werden usw. ...

Fehlermeldung: Diese Form des Methodenaufrufs ist nur für Klassenmethoden oder Konstruktoren zulässig.

Ich müsste also die aufzurufende Funktion ebenfalls als class function deklarieren und somit auch alle, in weiteren Schritten aufgerufenen Funktionen. Da dies allerdings sehr viele sind, möchte ich das vermeiden.
Weiters sind dann die Variablen die im Vorfeld in dieser Unit berechnet wurden nicht mehr Verfügbar: [dcc32 Fehler] uGRK.pas(1183): E2124 Instanzenelement 'EWI_im' in diesem Zusammenhang nicht verfügbar

Zitat aus der Hilfe:
Zitat:
Sie können außerdem auf keine Instanz-Member zugreifen. (Sie können aber auf Klassenfelder, Klasseneigenschaften und Klassenmethoden zugreifen

Gibt es noch andere Möglichkeiten, die Methode ohne Self Parameter zu übergeben, z.B. mit einem Compilerschalter o.ä??
Oder auf die Speicheradresse der Variablen ohne den Self Parameter zuzugreifen?

Gruß Johannes
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: C-dll Speicheradressen

  Alt 6. Nov 2017, 09:15
Auf globale Variablen solltest du eigentlich zugreifen können. Dass der Zugriff auf Instanzmethoden nicht funktioniert, ist ja ganz logisch. Die aktuelle Instanz wird ja im Self Parameter übergeben. Fehlt dieser, ist auch die Instanz zur Laufzeit unbekannt bzw. existiert nichtmal.

Mit class function und static deklarierte Methoden sind im Grunde nichts anderes als globale freistehende Funktionen. Die Klassenzugehörigkeit wird hier nur zur logischen Gruppierung verwendet. Einen Klassenkontext (Instanz, Felder, etc.) kann es hier nicht geben.

Sämtliche anderen Funktionen auch als class function zu deklarieren, ist kein Problem und sogar die korrekte Vorgehensweise, solange du keinen Kontext benötigst. Ist das doch der Fall, wirst du leider die Signatur der C Funktion anpassen müssen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  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 08:06 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