IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Fichiers mappés en mémoire non persistants


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Fichiers mappés en mémoire non persistants
    Bonjour,

    avec Firemonkey, sous Windows et sur Mac Os est-il possible de mapper un fichier non persistant en mémoire (ou de créer un RAM-Disk) ? Un des composants FMX que j'envisage d'utiliser n'est capable de restituer son travail que sous forme d'un fichier. Je ne veux pas que ce dernier traîne ne serait-ce qu'un instant sur le disque dur : les fichiers mappés en mémoire non persistants semblent être une solution. Sous Windows avec les API, cela me semble jouable comme on peut le faire avec VCL. Mais avec Firemonkey, n'y a-t-il pas mieux et surtout plus portable ?

    Merci. IW.

  2. #2
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 539
    Billets dans le blog
    10
    Par défaut
    De manière très simple du peux mémoriser ton fichier par un TStringList ou TMemoryStream

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par ALWEBER Voir le message
    De manière très simple du peux mémoriser ton fichier par un TStringList ou TMemoryStream
    Oui je pourrais mais ce n'est pas ce que je cherche. Je ne veux pas mémoriser un fichier existant sur un disque mais créer un fichier directement en mémoire. L'idéal aurait été de créer un RamDisk, et ensuite d'y enregistrer le fichier que crée le composant.

    Citation Envoyé par Paul TOTH Voir le message
    par curiosité, comment ferais-tu cela sous VCL ?!
    Le principe est ici : https://msdn.microsoft.com/fr-fr/lib...v=VS.110).aspx
    Une réalisation l'illustrant, là : http://delphi-snippets.blogspot.fr/2...ng-memory.html. Je ne l'ai pas mise en oeuvre. J'en suis au stade de la recherche de faisabilité. On peut en trouver d'autres exemples (google << [delphi memory mapped files] ) mais malheureusement tous partent d'un fichier existant en dur et ce n'est pas ce que je cherche. Et créer un RamDisk me semble hors de portée.

    Je vais contacter le fournisseur du composant. Peut-être y a -t-il moyen de sortir le résultat dans un TStream et non dans un TFile.

    Cdlt.
    Dernière modification par Invité ; 20/08/2015 à 15h22.

  4. #4
    Membre Expert Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Par défaut
    Il faudrait savoir ce que prend en parametre ton composant.
    J'ai deja mis en place une structure de ce type avec CreateFileMapping et MapViewOfFile, mais le lecteur et le redacteur utilisent tous deux ces fonctions, donc il n'y a pas de nom de fichier qui entre en jeu, juste un nom de "file mapping object", et je ne sais pas si il est possible de l'utiliser en tant que fichier. Il faudrait tester, tout dépend de la manière dont le fichier est traité par le composant.
    Par contre, cette solution reste propre à windows.

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par IniWo Voir le message
    Le principe est ici : https://msdn.microsoft.com/fr-fr/lib...v=VS.110).aspx
    Une réalisation l'illustrant, là : http://delphi-snippets.blogspot.fr/2...ng-memory.html. Je ne l'ai pas mise en oeuvre. J'en suis au stade de la recherche de faisabilité. On peut en trouver d'autres exemples (google << [delphi memory mapped files] ) mais malheureusement tous partent d'un fichier existant en dur et ce n'est pas ce que je cherche. Et créer un RamDisk me semble hors de portée.
    d'accord, je connaissais le principe des fichiers physiques mappés en mémoire, mais je ne savais pas que l'on pouvait mapper un espace mémoire sans fichier associé....ou plus exactement associé au paging système comme expliqué dans la fonction CreateFileMapping avec un handle INVALID_HANDLE_VALUE.

    ceci dit cela ne donne pas un fichier virtuel dans lequel on pourrait écrire comme un RAM Drive

    Dans le genre j'ai aussi exploré à une époque les Shell extensions pour avoir un accès à un dossier virtuel, mais là non plus il ne s'insère pas dans la gestion des fichiers classiques.

    Citation Envoyé par IniWo Voir le message
    Je vais contacter le fournisseur du composant. Peut-être y a -t-il moyen de sortir le résultat dans un TStream et non dans un TFile.

    Cdlt.
    ça me parait de loin le plus simple
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par IniWo Voir le message
    Bonjour,

    avec Firemonkey, sous Windows et sur Mac Os est-il possible de mapper un fichier non persistant en mémoire (ou de créer un RAM-Disk) ? Un des composants FMX que j'envisage d'utiliser n'est capable de restituer son travail que sous forme d'un fichier. Je ne veux pas que ce dernier traîne ne serait-ce qu'un instant sur le disque dur : les fichiers mappés en mémoire non persistants semblent être une solution. Sous Windows avec les API, cela me semble jouable comme on peut le faire avec VCL. Mais avec Firemonkey, n'y a-t-il pas mieux et surtout plus portable ?

    Merci. IW.
    par curiosité, comment ferais-tu cela sous VCL ?!
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2013, 12h08
  2. VC++.Net fichier mappés en mémoire
    Par XPits dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 04/03/2009, 10h50
  3. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  4. [Cookies] include non persistant en mémoire
    Par ouioui2000 dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2005, 15h07
  5. Réponses: 4
    Dernier message: 25/06/2005, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo