menu
  Home  ==>  articles  ==>  colibri_helpers  ==>  u_c_basic_file   

u_c_basic_file - John COLIBRI.


1 - Introduction

La classe c_basic_file encapsule la gestion de fichiers binaire sans type (un FILE).

Il s'agit là essentiellement d'un redécoupage des primitive Pascal. Cette classe permet:

  • de forcer la création d'un fichier
  • de tester s'il est ouvert ou non
  • de sauvegarder une version précédente du fichier
Historiquement elle a été utilisée pour la gestion des fichiers .ED puis a été scindée en une classe autonaume.


2 - Utilisation

2.1 Compilation

L'interface est la suivante:

    type c_basic_fileclass(c_basic_object)
                         private
                           m_fileFile;
                         public
                           m_c_file_namec_file_name;
                           m_io_resultInteger;
                           m_display_openBoolean;
                           m_is_openBoolean;

                           m_sizeInteger;

                           m_write_beginm_write_endInteger;

                           constructor create_basic_file(p_namep_complete_namestring); Virtual;

                           function f_check_and_display_io_resultBoolean;

                           function f_eraseBoolean;
                           function f_createBoolean;
                           function f_force_createBoolean;
                           function f_rename_previous_and_createBoolean;
                           function f_rename_previous_and_create_with_extension(p_extensionString): Boolean;
                           function f_openBooleanVirtual;
                           function f_open_or_createBoolean;
                           function f_appendBoolean;
                           function f_existsboolean;

                           procedure rename_file(p_new_nameString);
                           procedure force_rename_file(p_new_nameString);

                           procedure change_file_extension(p_extensionString);
                           procedure change_complete_name(p_complete_nameString);
                           function f_change_file_extension(p_extensionString): Boolean;

                           function f_test_or_create_u_pathString;

                           procedure seek_file(p_positionInteger);
                           function f_file_positionInteger;
                           function f_file_sizeInteger;
                           function f_eofBoolean;

                           function f_block_write(p_ptPointerp_lengthInteger): Boolean;
                           function f_block_read(p_ptPointerp_lengthInteger): Boolean;
                           procedure flush_file;

                           procedure copy_file(p_copy_nameString);

                           procedure truncate_file;
                           procedure close_fileVirtual;

                           Destructor DestroyOverride;
                       end;

En ce qui concerne les données:

  • m_file: le fichier
  • m_c_file_name: la classe qui contient le nom du fichier
  • m_io_result: le code d'erreur DOS
  • m_is_open: le booléen qui permet de savoir si le fichier a été ouvert (et évite d'appeler deux Reset ou deux Close de suite, par exemple)
  • m_display_open: affiche si le fichier est ouvert (pour la mise au point)
  • m_size: la taille
  • m_write_begin, m_write_end: les indices où ont été écrits les octets par BlockWrite
Et pour les procédures et fonctions:
  • create_basic_file: crée en fournissant l'identifiant et le nom complet
  • f_check_and_display_io_result: teste les erreurs d'entrée / sortie

  • f_erase: efface le fichier
  • f_create: crée le fichier
  • f_force_create: crée le fichier en effaçant le précédent
  • f_rename_previous_and_create: renomme le précédent et crée
  • f_rename_previous_and_create_with_extension: renomme le précédent avec l'extension fournie et crée
  • f_open: ouvre le fichier
  • f_open_or_create: ouvre le fichier s'il existe, sinon le crée
  • f_append: se positionne à la fin d'un fichier déjà ouvert
  • f_exists: teste l'existence

  • rename_file: renomme le fichier, sauf s'il en existe déjà un ayant ce nom
  • force_rename_file: efface un fichier ayant ce nom et renomme

  • change_file_extension: change d'extension vide en .~ED, ou l'extension .EXT en .~EXT
  • change_complete_name: change le nom complet
  • f_change_file_extension: change l'extension uniquement

  • f_test_or_create_u_path: crée un sous-répertoire 'u' (comme Utility). Utilisé par les utilitaires tels que le Pretty Printer qui crée des copies des fichiers traités dans ce répertoire, plutôt que d'écraser ou renommer les fichiers originaux (il est arrivé au Pretty Printer de se planter).

  • les primitives suivantes rendent PUBLIC des primitives non accessibles car m_file est PRIVATE:
    • seek_file
    • f_file_position
    • f_file_size
    • f_eof

    • f_block_write
    • f_block_read
    • flush_file
  • copy_file: copie le fichier

  • truncate_file
  • close_file

2.2 - Répertoires

L'unité est prévue pour être placée dans:

C:
  programs
    colibri_helpers
      units

Vous pouvez naturellement changer cette organisation par Projet | Options | Directories

Les directives de compilation sont:

  • R+ (vérification des intervalles)
  • S+ (vérification de la pile)
  • pas d'optimisation

3 - Programmation

Cette unité utilise les primitives de gestion de fichier standard.


4 - Améliorations

Citons:
  • une gestion plus rigoureuse de f_block_read, f_block_write et le position dans le fichier

5 - Télécharger le source

Vous pouvez télécharger: Avec les mentions d'usage:
  • j'apprécie tous les commentaires, remarques ou critiques
  • signalez-moi les bugs que vous trouverez.

L'auteur

John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le conseil (composants, architecture, test) et la formation. Son site contient des articles avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client.
Created: jan-04. Last updated: mar-2020 - 250 articles, 620 .ZIP sources, 3303 figures
Contact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:jcolibri@jcolibri.com
Copyright © J.Colibri   http://www.jcolibri.com - 2001 - 2020
Retour:  Home  Articles  Formations  Développement Delphi  Livres  Pascalissime  Liens  Download
l'Institut Pascal

John COLIBRI

+ Home
  + articles_avec_sources
    + bases_de_donnees
    + web_internet_sockets
    + services_web_
    + prog_objet_composants
    + office_com_automation
    + colibri_utilities
    + uml_design_patterns
    + graphique
    + delphi
    + outils
    + firemonkey
    + vcl_rtl
    + colibri_helpers
      – u_types_constants
      – u_strings
      – u_loaded
      – u_c_basic_object
      – u_c_display
      – u_dir
      – u_file
      – u_display_hex
      – u_c_file_name
      – u_c_basic_file
      – u_c_log
      – u_c_line
      – handle_files
      – u_c_path_segments
      – u_c_text_file
      – u_c_direct_acccess
      – u_c_string_file
      – u_c_file_of
    + colibri_skelettons
    + admin
  + formations
  + developpement_delphi
  + présentations
  + pascalissime
  + livres
  + entre_nous
  – télécharger

contacts
plan_du_site
– chercher :

RSS feed  
Blog