AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Generelles Zeitproblem mit Directx 8-9
Thema durchsuchen
Ansicht
Themen-Optionen

Generelles Zeitproblem mit Directx 8-9

Ein Thema von Konse · begonnen am 21. Feb 2007 · letzter Beitrag vom 22. Feb 2007
Antwort Antwort
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#1

Generelles Zeitproblem mit Directx 8-9

  Alt 21. Feb 2007, 10:26
Hallo zusammen,
hoffe einer von euch kennt das problem bzw. hat eine Lösung parat.
Habe schon in diversen anderen Foren gesucht und geschaut aber keine lsg
für mein Problem gefunden. Zudem bin ich nicht sicher was genau der Fehler ist.

Ich gebe die eine zeit vom Typ TDateTime aus:
z.b.
date ist 01.01.2000

bevor Directx Instanz erstellt worden ist
showMessage(DateToStr(Date)); ///gibt 01.01.2000 aus

erstelle directx Instanz
showMessage(DateToStr(Date)); ///gibt 31.12.1999 aus

Code:
procedure TSampleForm.FormActivate(Sender: TObject);
var
 tmpDate:TShortDate;
begin
  tmpDate:='01.01.2005';
  showMessage(dateToStr(tmpDate)); /// shows 01.01.2005
  InitDirect3D;
  showMessage(dateToStr(tmpDate)); /// shows 31.12.2005
  RunDirect3D;
  ExitDirect3D;
  HandleErrors;
  Close;
end;

Vermutung:
Es kommt zu einem Converting Fehler wegen der Precision von Delphi zu C++.
-> Jahr wird wegen der ungenauigkeit in der xten stelle zum schaltjahr, warum auch immer...


Hoffe einer von euch kann mir mehr dazu sagen.


Gruß Mario
Angehängte Dateien
Dateityp: dll dxerr9_820.dll (612,0 KB, 5x aufgerufen)
Dateityp: dll d3dx9_387.dll (1,88 MB, 6x aufgerufen)
Dateityp: exe matrix_152.exe (413,5 KB, 7x aufgerufen)
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Generelles Zeitproblem mit Directx 8-9

  Alt 21. Feb 2007, 15:05
Zitat von Konse:
Vermutung:
Es kommt zu einem Converting Fehler wegen der Precision von Delphi zu C++.
-> Jahr wird wegen der ungenauigkeit in der xten stelle zum schaltjahr, warum auch immer...
Die Vermutung mit der Praezision liegt sehr nahe, wobei ich nicht denke, dass zum schaltjahr gewechselt, sondern einfach auf den vorgehenden Tag gesprungen wird. (wegen der reduzierten Genauigkeit aufgrund geringerer Typengroesse).
Warum das so ist weiss ich nicht, genausowenig kann ich mir vorstellen, dass es an DirectX liegt. Zumindest greift die API keine dieser lokalen Variablen an.
Wie ist denn TShortDate deklariert?

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#3

Re: Generelles Zeitproblem mit Directx 8-9

  Alt 21. Feb 2007, 15:31
hi mike,
erstmal vielen dank für deine mühen.

also eigentlich ist es eher ein

type TDateTime = type Double;
oder type TShortDate= type TDateTime;

das TShortDate habe ich nur aus dem FF geschrieben und mich dort wohl geirrt.
In der Application wird TDateTime verwendet.

Ich hatte bis zur assemblerebene debuggt, kenne mich leider aber noch zu wenig
mit assembler aus um sagen zu können was jetzt der genaue fehler ist.


Dieser Fehler tritt bis jetzt bei allen DirectX Versionen in verb mit delphi auf.

Gibt es eine Möglichkeit diesen Fehler zu umgehen?
z.b. die Precision herunterschrauben auf Single ?

War in sovielen Foren und habe nachgelesen aber nichts gefunden um diesen Fehler
auch nur als Workaround beheben zu können.

Gruß, Konse


PS:
Das beispiel was ich dort angehängt habe ist von das standartbeispiel von clootie.
http://www.clootie.ru/delphi/download_dx92.html
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  Mit Zitat antworten Zitat
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#4

Re: Generelles Zeitproblem mit Directx 8-9

  Alt 22. Feb 2007, 08:59
Workarounds:
die precision auf extended setzen nachdem DXinit aufgerufen worden ist.
Das CreateDevice mit D3DCREATE_FPU_PRESERVE Flag aufrufen, somit wird die default extended precision von delphi verwendet.

Warum das jetzt generell auftritt weiss ich immer noch nicht


Gruß, Konse
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  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 16:30 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