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

4D Discussion :

Problème avec Type Createur et Type Document sur Mac


Sujet :

4D

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Problème avec Type Createur et Type Document sur Mac
    Bonjour a tous,

    J'ai un problème sur Mac pour récupérer le type createur et le type document d'un document que j'ouvre...
    Chaque fois j'ai en retour une chaine vide

    Exemple de code:

    $file_import:=ouvrir document("")
    si(ok=1)

    $extent:=type document(Document)
    $creat:=typ createur(Document)

    Alerte ($extent)
    Alerte ($creat)

    fermer document($file_import)
    ....
    fin de si

    La variable système Document est bien remplie
    Par contre les variables $extent et $creat sont vides..

    Quelqu'un a une idée ???

    PS : Je tourne en version 2003.8r2 sur OS X Tiger

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Sur Mac, depuis OS X, tous les fichiers n'ont pas nécessairement de type/createur. Plus exactemnt, leurs type/createur vaut 0 pour le système, c'est-à-dire 4 fois le Caractere(0) une fois traduit en "4 char code". Dans ton exemple, tu peux tester ça facilement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $extent:=type document(Document)
    $creat:=createur dcument(Document)
     
    ALERTE(Chaine(Longueur($extent)))
    ALERTE(Chaine(Longueur($creat)))
    Et si tu boucles sur chaque caractere...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    boucle($i;1;longueur($extent))
      ALERTE(Chaine(Code ascii(extent[[$i]])))
    Fin de boucle
    ... tu verras 4 fois 0

    Dans ces cas là, la seule façon d'avoir le type est de regarder l'extension, situé la fin du fichier : tu parcours Document à partir de la fin, jusqu'à trouver un point. Tu en déduis l'extention, et tu essayyes de la gérer ("text", "txt", rtf", "doc", "xls", ...)

    Petite note technique : pour être sûr que le type ou le créateur est à 0, sans risquer d'interference avec un type/createur exotique (certaines applications ont des types du style (en 4D) Caractere(1)+Caractere(2)+Caractere(3)+Caractere(4)), il faut mettre la valeur dans un blob, transférer le blob dans un numérique et tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    C_BLOB($blob)
    TEXTE VERS BLOB($extent;$blob)
    Si (BLOB vers entier long($blob;Ordre octets natif )=0)
      ALERTE("Type vide : se baser sur l'extension")
      $extension:=""
      Boucle ($i;Longueur(Document);1;-1)
        Si (Document[[$i]]=".")
          $extension:=Sous chaine(Document;$i+1)
          $i:=1
        Fin de si
      Fin de boucle
      ALERTE("Extention : <"+$extension+">")
    Fin de si
    Au passage, pas besoin de vraiment ouvrir le document pour récupérer ces infos, tu peux utiliser la constante LIre chemin acces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file_import:=Ouvrir document("";"";Lire chemin accès )
    A+

    Thibaud

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci Thibault pour ces précieuses infos. et c'est un peu ce qui me semblait.

    Cependant, dans mon cas c'est la partie émergée de l'iceberg, car je stocke par la suite le document dans un Blob pour faire par la suite (à la demande) un AP ShellExecute.

    Sur PC pas de soucis, par contre sur Mac il n'ouvre pas l'application correspondante...D'où ma question sur les type documents et type createur.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Lorsque tu recrées le document :

    -> Tu crées ton document : Créer document ou REGLER SERIE suivi d'ENVOYER PAQUET (en boucle si besoin), ou BLOB VERS DOCUMENT

    -> Si ça n'a pas été fait lors de la création, tu redonnes bien le nom (en tout cas l'extension) exact

    -> Puis tu changes le type et le créateur. Si tu restitues les originaux (4 caracteres 0 donc), le document créé aura bien des type/createur à 0

    Ensuite, ma foi, normalement ça marche. SI tu exécutes la chose sur le même MAc que celui qui a blobé le document d'origine, ça doit marcher. SI tu l'exécutes sur un autre, ça peut dépendre de ses réglages.

    Que se passe-t-il lorsque tu fais le ShellExecute avec le chemin d'accès ?
    Que se passe-t-il lorsque tu double-cliques sur le fichier depuis le finder ?

    Thibaud

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2011, 20h28
  2. [XHTML] Problème avec des balise de type block
    Par kei-kun41 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/06/2006, 13h55
  3. problème avec bloc détail de type tabulaire(forms)
    Par med_anis_dk dans le forum Forms
    Réponses: 3
    Dernier message: 01/06/2006, 21h16
  4. Problème avec control parent de type TDrawGrid
    Par slylafone dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/11/2005, 17h32
  5. Problème avec les champs de type table
    Par devdev dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/12/2004, 16h05

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