Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 03:41

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Nov 29, 2004 16:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Hallo!

Habe ein Problem.
Und zwar kann ich Newton keine Procedure einer Klasse als ForceAndTorqueCallback geben.
Muss ich aber, da ich eine Geschwindigkeit speichern möchte (Y den fall) weil Newton hat keine schwerkraft oder so?!
Nunja, dann möchte eben im Callback einmal YWert vergrößern um 9,81 und mit der masse multiplizieren.
Jemand ne andere Idee, wies geht?
Weil ich kann ja sonst net auf die richtigen privaten variablen zugreifen.

Oder gehts ganz einfach? :D

ThX

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 16:55 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
ich weiss nicht, ob das jetzt unsinn ist, aber nimmt newton nicht nur funktionen für die callbacks??

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 17:13 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Das ist unsinn :D
Ohne klassen gehts ja ;)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 17:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die Callbacks in Newton sind doch eigentlich alle global, also machts keinen Sinn Klassenmethoden zu benutzen (was vom Design her AFAIK auch nicht geht, liegt wohl daran dass Newton C ist).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 19:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
The thing is that a function or a procedure is different inside a class. I had the same thing when assigning a class procedure to lua. That just does not work. Even inside delphi a class procedure is unequal to a normal procedure as it seems to me.
to solve that i use normal procedure that access the class procedure, i do not know if it also applies to your case but have a look how i solved it for lua: http://www.noeska.com/dlua/downloads.aspx

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 22:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Das Problem ist, dass Methoden von Delphi (und übrigens auch C++) Klassen einen impliziten zusätzlichen Parameter haben (self unter Delphi), mit dem die aktuelle Instanz und in weiterer Folge die VMT aufgelöst wird. Da die Umsetzung dieses zusätzlichen Parameters (in einem Register, auf dem Stack) ohnehin von der Programmiersprache abhängig ist, macht es auch keinen Sinn, Klassenmethoden eine bestimmte Aufrufkonvention zuzuordnen (wie etwa stdcall), da spätestens bei der Auflösung einer virtuellen Methode Code einer "fremden" Programmiersprache ohnehin den Geist aufgibt.
Aus diesem Grund haben sämtliche Bibliotheken mit guter Cross-Kompilerunterstützung (wie OpenGL) eine rein prozedurale API (was nichts darüber aussagt, ob objektorientiert programmiert wurde oder nicht) - und aus dem selben Grund hat Microsoft eine objektorientierte Schnittstelle direkt ins Betriebssystem ausgelagert (OLE), wodurch man solche Objekte zwar unabhängig von der Programmiersprache ansprechen kann, was aber andere Probleme mit sich bringt (Performance, mangelnde Unterstützung alternativer OS).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 22:49 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
In der VCL gibt es ja das gleiche Problem mit der Fensterfunktion. Dort wird dann ein kleiner Buffer mit dem entsprechenden Befehlen (pop ecx,jmp @method) belegt und als Addresse die Addresse des Buffers übergeben. Das geschieht über die Funktionen MakeObjectInstance und FreeObjectInstance. Wer den VCL Quellcode hat, kann sich das in der unit forms.pas ansehen.
Dieses Thema wurde aber bereits schonmal im Forum erläutert:
viewtopic.php?t=2691&highlight=makeobjectinstance


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 22:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Wollte doch nur wissen ob ichs auch anderst machen kann oder irgendwie tricksen ;)
Interessant aber wie ihr immer wieder die Themen wechseln könnt :D

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 01, 2004 16:28 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Aber das war doch gerade die Lösung ...

Du nimmst eine andere Funktion als Wrapper, die nichts anderes macht, als die Klassenmethode aufzurufen.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 01, 2004 17:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Ja, ich muss allse umwerfen und umschreiben.
Denn die Klasse ist in einem Array und ich weiß nie welche Klassenprocedure ich dann aufrufen muss, nur im create weiß ich das ^^
Naja gut. alles umwerfen.
(Ist wenn man net nachdenkt *gr*)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]