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

Langage Delphi Discussion :

Structure fichier texte..


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut Structure fichier texte..
    bonjour a tous ..( je renouvelle ce post car je le trouve plus ! )

    je voudrais savoir si il existe une zone dans un fichier texte ou je puisse ecrire un octet , sans que c'est octet soit visible par un editeur de texte standart ( style notepad ) ou recopiable via le presse papier .

    le but de ma manip est d'identifier le type de fichier texte pour donner certain droit a l'utilisateur ( ce qui est fait) .

    Le stockage des droits doit etre stocké dans son propre fichier car ils peuvent etre deplacer de machine en machine , voir de societé en société .

    mais a ce jour les droit peuvent etre modifié par un quelconque editeur de texte . d'ou le besoin d'ecrire des info invibles ( par exemple l'endroit ou son stocké les info du fichier date de creation .... )

    merci pour tous , je suis preneur de toute les idées .

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    bonsoir Je suis trés loin d'etre doué en ce qui concerne delphi, mais ne serait t'il pas plus pratique dans ton cas de créer des fichier d'enregistrement record portant une extention que tu choisirais qui accompagneraient ton fichier texte, voir de crypter le texte dans un fichier spécial, que tu devrais décripter ou pas selon que la personne possede l'acréditation ou pas. Il te "suffirait" dans ce cas, de décrypter tes données et de le remetre sous forme de texte avant de les affichher... j'espere que je ne dis pas de betises...

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    salut non tu ne dis pas de betises !

    j'aurai pu en effet mettre les droit dans un autre fichier ( premiere option que j'avais envisager ) ,mais le client ne veut pas de fichier
    supplementaire,... les mettres dans la base des registres , mais le fichier se promene de machine en machine donc pas possible non plus .

    j'ai ensuite crypté mon fichier pour qu'il ne puisse retrouver les droit a l'interieur , mais les parties utiles doivent rester lisible , donc on connait la zone ou se trouve les droit .


    en fait le but de l'operation est la suivante :

    Faire en sorte de bloquer l'utilisation d'un fichier texte par l'application si il a subit une modification et si ces droit ne le lui permettait pas .
    donc 3 cas se presente
    - ancien fichier ( pas de droit )
    - nouveau fichier avec possibilité de modification
    - nouveau fichier sans possibilité de modification

    et dans les 3 cas ces fichiers doivent rester lisible par un editeur de texte exterieur a l'application.

    donc une simple info me permettrai de savoir de quel type de fichier il s'agit , mais elle doit pas etre visible.

    si d'autre idée vous passe par la tete je susi prenneur.

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    On pourrait penser qu'un EOF (DTL-Z) en fin de fichier suivi des données à cacher aurait pu marcher, mais ce n'est pas le cas.

    Si le seul but est d'empêcher la modification de certaines données, pourquoi ne pas insérer un checksum calculé sur les les droits (algorithme non publié) et le vérifier à l'utilisation : si un utilisateur modifie les droits, le checksum ne sera plus bon.

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Et en réfléchissant bien on te demande de faire qq chose qui n'est pas possible. Il y a des données et des droits et je ne connais pas d'OS qui regroupe nativement ces 2 informations dans un même conteneur ( mais je ne connais pas tout non plus ).

    Qq pistes :
    Je pensais aux fichiers composites OLE mais il se peut qu'ils nécessitent un lecteur spécifique.
    MS Office 2003 à instaurer une politique de sécurisation des documents (IRM), je n'ai pas creusé le sujet mais il se peut qu'il se base sur ce principe.

    Il y a les Flux mais il ne sont pas copiés avec les API de base.

    Il existe la signature de code, c'est le principe mis en place sous Monad ou WSH pour se protéger de la modification d'un script, mais dans ce cas la signature apparait dans le fichier :-(.

    [edit]
    Ton titre ne correspond pas du tout à ton pb, tu ne te facilites pas la tâche :-)

  6. #6
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    Oui Laurent , a mon avis aussi un truc pas trop possible normalement, d'ou la recherche d'une maniere detourné !

    Graffito, j'essaye aussi les checksums !

    En fait je calcule la cheksum de mon fichier et j'inserre a l'interieur des valeur hexa qui corresponde a mes droits , ils deviennent donc illisibles et donc 'non modifiable' ( on touche pas a ce qu'on sait pas ! sous peine de ne plus pouvoir exploiter le fichier )

    cela marche ... presque bien !!!

    Sauf si un petit malin recopie la totalité de la checksum d'un fichier (avant des droit a la modification) dans un fichier (qui a pas les droit a la modification ) .

    Dans ce cas çà change les droits et donc je controle plus la checksum puisque j'autorise la modification.

    il me reste plus qu'a detecter que la ligne de checksum appartiens pas au fichier ( une autre checksun ???? ).
    pour cette nouvelle checksum j'ai pensé aux dates de creation , modification ...du fichier , mais cela change aussi quand on change le fichier de volume !! donc je dois trouver autre chose (peut etre le nom du fichier si celui ci ne change jamais !!)

    Merci pour vos idées .

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Tu pourrais peut-être mettre le checksum dans la date de création du fichier. Cette date devrait rester inchangée en cas de modification.

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Graffito
    Tu pourrais peut-être mettre le checksum dans la date de création du fichier. Cette date devrait rester inchangée en cas de modification.
    Oui mais cette info est perdu lors d'une copie et cela fausserais des traitements de sauvegarde basés sur la date par exemple.

  9. #9
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Oui mais cette info (date de création) est perdu lors d'une copie et cela fausserais des traitements de sauvegarde basés sur la date par exemple
    .

    Exact, la copie modifie la date de création (j'aurais pas cru ).

  10. #10
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    vérifie si tu ne peux pas stocker dans les attributs du fichier : c'est un entier, mais tous les bits ne semblent pas utilisés par l'OS (à savoir s'ils sont recopiés ???)

  11. #11
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    Une idée pas trés conventionnelle (J'ai l'esprit un peu tordu :p)
    - lorsque ton application est en fonctionnement, tu gere deux "fichier" qui seront supprimé plus atrd... Dans le premier, les droits, dans le second, les donnée, lorsque tu sauvegarde ton fichier, tu crypte séparément les donnée, les rassemble selon un algo de ton cru qui permet la lecture des donnée incompréhenssible sur un éditeur de texte et tu sauvegarde le tout dans un unique fichier.

    Lorsque ton application ouvrira le dit fichier, elle utilise donc un premier algo pour séparer les données, ensuite, ton appli décripte la partie "droit", si elle est corecte, tu décripte le reste, et tu permet des modifications, si elle ne l'est pas, tu interdit l'acces aux données... Ca te permetrait de gerer par la meme les modifications effectué avec les editeurs de texte comme des erreurs...

    Ceci rend tes fichiers completement illisible par n'importe quel autre application...Si tu voulais que tes fichiers soient lisible apr n'importe quel éditeur, alors c'est une trés mauvsaise idée que je viens de t'exposer

    NB: j'ai conscience que cette methode est trés brutale et peu conventionnelle, mais pour de spersonnes n'y connaissant pas grand chose en programmation, ca peut amplement suffire
    (tappez moi si je dis une betise )

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    j'avais lu dans la doc delphi que les fichiers étaient tous représentés avec un entête au format Record. Voici une copie de la doc en ligne de Delphi2. Ne pourrait-on pas utiliser la zone UserData pour stocker ce qu'on veut ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Unité
    SysUtils
    Déclaration
    PTextBuf = ^TTextBuf;
    TTextBuf = array[0..127] of Char;
    TTextRec = record
      Handle: Integer;
      Mode: Integer;
      BufSize: Cardinal;
      BufPos: Cardinal;
      BufEnd: Cardinal;
      BufPtr: PChar;
      OpenFunc: Pointer;
      InOutFunc: Pointer;
      FlushFunc: Pointer;
      CloseFunc: Pointer;
      UserData: array[1..32] of Byte;
      Name: array[0..259] of Char;
      Buffer: TTextBuf;
    end;
    Description
    TTextRec est le format interne d'une variable de type texte. Vous ne déclarez jamais une variable de ce type. Toutefois, vous pouvez utiliser TTextRec pour transtyper une variable fichier texte afin d'accéder à ses champs internes, au nom du fichier par exemple.
    Remarque : N'utilisez ce type que si vous avez une bonne maîtrise de l'écriture des pilotes de périphérique de fichier texte en Pascal Objet.

    Il y a aussi le type TFileRec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TFileRec = record
      Handle: Integer;
      Mode: Integer;
      RecSize: Cardinal;
      Private: array[1..28] of Byte;
      UserData: array[1..32] of Byte;
      Name: array[0..259] of Char;
    end;
    Description
    TFileRec est le format interne pour les fichiers typés et non typés. TFileRec vous permet de transtyper une variable fichier pour accéder à ses champs internes.
    Remarque : Normalement, vous ne devriez jamais déclarer une variable de ce type.

  13. #13
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    Merci pour toutes vos idées .. !

    Mais la seule solution pour ce que je voulais faire ( dans son integralité ) , aurait été d'avoir un attribut de lecture seule qui ne soit pas modifiable depuis windows et que je puisse gerer a ma convenance puisque ce fichier peut dans certain cas etre editable ( et cet attribut n'existe pas !! ).

    Donc a ce jour la seule chose que je fais, c'est de detecter une modification du fichier avec un jeu de checkum .
    Dans le cas où la modification est interdite , j'imprime un filigramme sur le document pour indiquer que le document a subit une modification avec un application autre que celle qui crée le fichier .

    bye a tous ! ( sujet a creuser quand meme !! )

Discussions similaires

  1. Réponses: 13
    Dernier message: 19/12/2010, 10h40
  2. [XL-2007] Lecture fichier texte structure variable
    Par Phileo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/06/2010, 22h03
  3. Réponses: 4
    Dernier message: 06/05/2010, 19h24
  4. [MySQL] créer un fichier texte selon une structure
    Par pascale86 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/12/2007, 14h44
  5. lecture fichier texte pointeur et structure
    Par shermav dans le forum C
    Réponses: 8
    Dernier message: 13/04/2007, 23h44

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