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

Aktuelle Zeit: Fr Jul 04, 2025 04:37

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Callbacks zuweisen
BeitragVerfasst: Di Apr 26, 2011 13:40 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
Hallo,

ich hatte mich ja schonmal gemeldet mit den Restless-Objekten aber auch wenn sich nun jemand anschaut was ich bei Blender verbockt habe mach ich ja zwischendurch weiter und bin nun dabei die Texturen einzufügen.

Nun ist es ja eigentlich kein problem den code aus den samples zu nehmen und in mein projekt einzufügen, eigentlich.

ich habe die Callbacks in einer meiner Klassen eingebaut und dann die zuweisungen übernommen.

nun bekomme ich aber einen fehler das ein reguläre procedure kein pointer sei. hier die relevanten codeausschnitte

Code:
  1.  
  2.     procedure OnBindTexture( const userData: Pointer; const obj: TRLSObject; const texture: Pointer; const tu: Integer);
  3.     function OnLoadTexture( const userData: Pointer; const obj: TRLSObject; const name: Pchar; const tu: Integer): Pointer;
  4.  


Code:
  1.  
  2. constructor TStateObject.Create;
  3. begin
  4.  iPosition := SetVec3v(0,0,0);
  5.  iRotation := SetVec3v(0,0,0);
  6.  iVisible := false;
  7.  iTex := TglBitMap2D.Create;
  8.  restlessSetOnLoadTextureCallback(nil, iMesh, OnLoadTexture);
  9.  restlessSetOnBindTextureCallback(nil, iMesh, OnBindTexture);
  10.  if Assigned(OnCreate) then OnCreate(Self);
  11. end;


ich hab es auch schon mit dem zusatz "Sender : TObject;" probiert aber das wollte auch nicht helfen

Zitat:
[Error] ObjektMng.pas(108): Incompatible types: 'regular procedure and method pointer'


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Callbacks zuweisen
BeitragVerfasst: Di Apr 26, 2011 13:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Apr 09, 2009 12:51
Beiträge: 53
Programmiersprache: Lazarus
Ins Blaue geraten:

Dropye hat geschrieben:
Code:
  1.  
  2.     procedure OnBindTexture( const userData: Pointer; const obj: TRLSObject; const texture: Pointer; const tu: Integer);
  3.     function OnLoadTexture( const userData: Pointer; const obj: TRLSObject; const name: Pchar; const tu: Integer): Pointer;

Die beiden Methoden sind in einer Klasse deklariert.

Schreib die mal einfach so direkt über den Konstruktor:
Code:
  1.  
  2. implementation
  3.  
  4. procedure OnBindTexture( const userData: Pointer; const obj: TRLSObject; const texture: Pointer; const tu: Integer);
  5. begin
  6.   // Code
  7. end;
  8.  
  9. function OnLoadTexture( const userData: Pointer; const obj: TRLSObject; const name: Pchar; const tu: Integer):
  10. begin
  11.   // Code
  12. end;
  13.  
  14. constructor TStateObject.Create;
  15. begin
  16.  iPosition := SetVec3v(0,0,0);
  17.  iRotation := SetVec3v(0,0,0);
  18.  iVisible := false;
  19.  iTex := TglBitMap2D.Create;
  20.  restlessSetOnLoadTextureCallback(nil, iMesh, OnLoadTexture);
  21.  restlessSetOnBindTextureCallback(nil, iMesh, OnBindTexture);
  22.  if Assigned(OnCreate) then OnCreate(Self);
  23. end;
  24.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Callbacks zuweisen
BeitragVerfasst: Di Apr 26, 2011 15:23 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Versuch mal

Code:
  1.  restlessSetOnLoadTextureCallback(nil, iMesh, @OnLoadTexture);
  2.  restlessSetOnBindTextureCallback(nil, iMesh, @OnBindTexture);


Zumindest bei FreePascal ist ein @ bei einer Methodenübergabe Pflicht (alles andere wird als Untyped gewertet), und ich denke, dass bei Delphi hier auch so ein Punkt erreicht ist.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Callbacks zuweisen
BeitragVerfasst: Di Apr 26, 2011 15:49 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
Ich hab lange kein Delphi mehr benutzt aber zeig uns mal die Zeile 108.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Callbacks zuweisen
BeitragVerfasst: Di Apr 26, 2011 22:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

das passiert entweder wenn du das of Object bei dem Event vegessen hast:
Code:
  1. TMyEvent = procedure (MyParam: TMyType) of Object;

oder wenn du eine Methode übergeben willst, die nur in einer anderen Methode gültig ist:

Code:
  1. procedure Test;
  2.   procedure OnMyEvent(MyParam: TMyType);
  3.   begin
  4.     //
  5.   end;
  6. Event: TMyEvent;
  7. begin
  8.   Event := OnMyEvent;
  9. end;


MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Callbacks zuweisen
BeitragVerfasst: Di Apr 26, 2011 22:54 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
ah also der compiler gibt jetzt ruhe dank bergman, dein tipp hatte ich noch nicht getestet und ehrlich auch nicht gewust
ich konnte die funktion mit einem zusatz auf eine andere lenken die das selbe macht eine textur seh ich zwar noch nicht aber das wird schon :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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.008s | 15 Queries | GZIP : On ]