Section courante

A propos

Section administrative du site

Les recouvrements (OVERLAY)

Cette base de connaissance est relié au question en relation avec le Turbo Pascal et le recouvrement ou OVERLAY en anglais.

Les recouvrements sont-elles prises en charge dans le Turbo Pascal 5.0 ou supérieur ?

Oui ! Consultez l'exemple de programme OVRDEMO.PAS et reportez-vous à la page Utilisation de recouvrement pour obtenir des informations sur les recouvrements.

Existe-t-il un moyen de déterminer quelles unités de recouvrement sont chargées dans le tampon de recouvrement ?

Avec Turbo Pascal 5.0+, il n'existe aucune méthode définie pour déterminer quelles unités sont chargées dans la zone tampon de recouvrement.

Comment puis-je transférer un fichier de recouvrement volumineux sur une disquette ?

Si le fichier ne tient pas sur un disque à densité simple, transférez-le sur un disque à double densité. Dans ce dernier cas, votre application ne s'exécutera qu'à partir du disque à double densité ou d'un disque dur.

Comment récupérer la mémoire utilisée par le tampon de recouvrement en Turbo Pascal 5.5 ?

L'exemple suivant montre comment procéder :

  1. Unit Marker;
  2.  
  3. INTERFACE
  4.  
  5. Procedure RestoreHeap; 
  6. Procedure RestoreOverlay;
  7.  
  8. IMPLEMENTATION
  9.  
  10. Var OldHeapPtr,OldHeapOrg,Temp:Pointer;
  11.  
  12. Procedure RestoreHeap;Begin
  13.  Release(Temp);                {2. Libérer toutes les variables dynamiques}
  14.  OldHeapOrg:=HeapOrg;          {3. Enregistrer l'état actuel de la mémoire de tas}
  15.  OldHeapPtr:=HeapPtr;
  16.  HeapOrg:=Ptr(OvrHeapOrg,$0);  {4. Définir la mémoire de tas sur l'origine du tampon de recouvrement}
  17.  HeapPtr:=HeapOrg;
  18.  Mark(Temp);                   {5. Marquez l'origine de cette mémoire de tas}
  19. End;
  20.  
  21. Procedure RestoreOverlay;Begin
  22.  Release(Temp);                {6. Libérer toutes les variables dynamiques}
  23.  HeapOrg:=OldHeapOrg;          {7. Restaurer les pointeurs de la mémoire de tas}
  24.  HeapPtr:=OldHeapPtr; 
  25. End;
  26.  
  27. BEGIN
  28.  Mark(Temp);  {1. Marquer le début de la mémoire de tas après le tampon de recouvrement}
  29. END.

L'unité doit être utilisée avant toute unité plaçant des éléments dans la mémoire de tas pendant leur initialisation. Vous devez appeler RESTOREHEAP avant d'utiliser les variables dynamiques nécessitant de la mémoire utilisée par le tampon de recouvrement. Un appel à OVRCLEARBUF doit être effectué avant tout appel à RESTOREHEAP pour garantir que le tampon de recouvrement est vide et pour forcer un rechargement des recouvrements lorsque vous avez terminé. Notez que toutes les variables dynamiques résidant sur la mémoire de tas, avant qu'un appel RESTOREHEAP ne soit effectué, sont perdues. (Mais vous pouvez contourner ce problème en manipulant la liste libre).

RESTOREOVERLAY efface à nouveau la mémoire de tas et restaure les pointeurs de tas pour qu'ils pointent au-dessus du tampon de recouvrement. Vous pouvez alors recommencer à utiliser les procédures et fonctions de recouvrement.

Il s'agit d'un exemple simple et il peut ne pas convenir à tous les usages.



Dernière mise à jour : Jeudi, le 8 août 2024