# Environnements de dveloppement > Delphi > Codes sources  tlcharger >  Unit WinGraph pour Delphi XE

## forum

Bonjour, 

Je vous propose un nouvel lment  utiliser : Unit WinGraph pour Delphi XE

L'unit WinGraph de Stefan Berinde, retouche pour tre compatible avec Delphi XE et versions suivantes.

Le dossier .\original contient le paquetage original de WinGraph 1.1.

Le dossier .\demo\chessboard contient un chiquier bas sur l'unit WinGraph.



Qu'en pensez-vous ?

----------


## Roland Chastain

Pour l'histoire des modifications apportes, voir cette discussion :

https://www.developpez.net/forums/d1.../xe2-wingraph/

Rcemment, je me suis aperu que plus aucun programme bas sur l'unit WinGraph (modifie ou non) ne fonctionnait : j'obtenais  chaque fois une erreur 216  l'excution. En ttonnant, j'ai vu que le problme venait de la partie OpenGL. Du coup j'ai supprim cette directive :



```
{$DEFINE INIT_OPENGL}     //<- switch for OpenGL driver initialization
```

Cela rgle le problme mais videmment OpenGL n'est plus utilisable (l'exemple real3d.pas ne fonctionne plus). Si quelqu'un a une ide pour une vraie rparation, je suis preneur.  :;):

----------


## anapurna

salut 

sous quel systme l'as tu essay ?
regarde si c'est pas l'appel au FPU (set8087 et Get8087) qui dconne pas ?

----------


## Roland Chastain

@anapurna

Merci pour ta rponse, que je viens seulement de voir.

C'est sous Windows : l'unit WinGraph ne fonctionne que sous Windows.

Je n'ai aucune ide de ce qui se passe. Tout ce que je sais c'est que si j'active cette directive :



```
{$DEFINE INIT_OPENGL}
```

j'obtiens,  l'excution du programme, un message "Runtime error 216".

Personnellement, a ne me gne pas trop car je n'utilise pas OpenGL mais puisque j'ai publi cette unit, j'aimerais autant qu'elle soit entirement fonctionnelle.

----------


## anapurna

salut Roland 

je sais que c'est sous windows ... c'etait plus dans le sens win32 ou win64

----------


## Roland Chastain

> je sais que c'est sous windows ... c'etait plus dans le sens win32 ou win64


Ah d'accord, je n'avais pas bien compris la question. Donc mon systme d'exploitation c'est Windows 10 64-bit. Mais si j'ai bien compris Delphi compile pour Win32, n'est-ce pas ? Tu penses que a pourrait venir de l ?

----------


## anapurna

salut 

oui je pense que cela joue pour ton problme
je ne sais plus ou j'ai lu que l'instruction tait inoprante pour les systme 64 bit

en cherchant un peu j'ai trouv ce genre de code pour opengl




```

```

----------


## Roland Chastain

@anapurna

Merci pour le code. Je vais l'essayer.  :;):

----------


## Roland Chastain

Bon, je n'ai toujours pas russi  rsoudre le problme. Peut-tre que je n'ai pas su utiliser la solution propose.  ::?:

----------


## anapurna

salut 

tu as un exemple qui ne fonctionne pas avec wingraph mme basique histoire 
que je regarde un peu le problme ds que j'ai un peu de temps chez moi ...

----------


## Roland Chastain

> salut 
> 
> tu as un exemple qui ne fonctionne pas avec wingraph mme basique histoire 
> que je regarde un peu le problme ds que j'ai un peu de temps chez moi ...


Bonjour ! Merci pour ton soutien. En fait aucun exemple ne fonctionne lorsque la directive {$DEFINE INIT_OPENGL} est prsente dans l'unit WinGraph : une erreur 216 se produit avant l'ouverture de la fentre. Maintenant, comme exemple qui utilise vraiment OpenGL, il y a le programme *demo*, et sa procedure OpenGLPlay.

----------


## anapurna

salut 

bon j'ai fait des test delphi 6 et delphi XE7 starter pas de plantage avec l'opengl activ
quelque messages d'avertissement transtypage de chaine implicite mais rien de bloquant 
mon systeme windows 10 64 bits sur processeur x64 (amd) 

ci joint mon test demo 2.zip

----------


## Roland Chastain

> bon j'ai fait des test delphi 6 et delphi XE7 starter pas de plantage avec l'opengl activ
> quelque messages d'avertissement transtypage de chaine implicite mais rien de bloquant 
> mon systeme windows 10 64 bits sur processeur x64 (amd)


Bonjour ! Effectivement chez moi aussi a fonctionne (Delphi 10.2, FPC 3.0.2, Windows 10 64-bit).

Si je comprends bien, tu n'as fait aucune modification dans le code, mis  part les directives de compilation que tu as ajoutes ? As-tu une ide de la raison pour laquelle a fonctionne maintenant ?

----------


## anapurna

salut 

comme tu le dis mis  part les "directives de compilation"
j'ai un fichier defs.inc qui dfinit certaines des directives
tu linsres dans ton source avec l'instruction 

```
{$I NOMDEFICHIER.INC}
```

c'est celles-ci qui me servent pour diffrencier les CPU et les compilateurs

ensuite j'utilise les directives dans le source


```

```

je ne sais pas comment tu avais utilis les directives mais je pense que tu ne les avais pas pr-dclares

----------


## Roland Chastain

@anapurna

Bonjour !

Je m'aperois que je t'ai donn une fausse information lorsque j'ai dit qu'aucun exemple ne fonctionnait.  ::oops:: 

En fait ( moins que je ne me trompe  nouveau) je constate que l'exemple _demo_ fonctionne avec ou sans ta modification, et que l'exemple _hello_ ne fonctionne pas avec ou sans ta modification.

Je suis en train de chercher quelle diffrence il y a entre les deux programmes.

----------


## Roland Chastain

Je ne comprends pas : je ne vois pas de diffrence entre les deux programmes.

Mais j'ai quand mme trouv quelque chose. En compilant l'exemple _hello_ avec Free Pascal (et l'option -gl), j'apprends qu'il y a une violation d'accs sur cette ligne :



```
  oglWindow:=wglCreateContext(grWindow);
```

----------


## anapurna

Salut 




> @anapurna
> 
> Bonjour !
> 
> Je m'aperois que je t'ai donn une fausse information lorsque j'ai dit qu'aucun exemple ne fonctionnait. 
> 
> En fait ( moins que je ne me trompe  nouveau) je constate que l'exemple _demo_ fonctionne avec ou sans ta modification, et que l'exemple _hello_ ne fonctionne pas avec ou sans ta modification.
> 
> Je suis en train de chercher quelle diffrence il y a entre les deux programmes.


c'est bizarre moi tout fonctionne 




```

```

surtout que pour le coup l il n'utilise pas opengl

----------


## Roland Chastain

> c'est bizarre moi tout fonctionne


Bonjour ! C'est bizarre en effet. Je n'y comprends rien. Mais j'ai remarqu, en compilant la dmo que tu as poste, que le compilateur ne passe pas sur la ligne o est appele la procdure SetExceptionMask. D'ailleurs, s'il y passait, il ne pourrait pas la compiler puisque l'unit Math n'est pas dclare.  ::?: 

P.-S. Chez moi le programme suivant affiche "32".



```

```

Pourtant mon systme est bien Windows 10 64-bit (d'aprs la page d'accueil de CCleaner).

----------


## anapurna

salut 

si tu ajoute cela de le defs.inc 



```

```

je ne peut pas le tester ... pas de Delphi x.. disponible dans la journe

ici tu trouvera tout les dclaration prdfini en Delphi

----------

