fatal_error a écrit:slt,
tu écris dans un fichier pour sauvegarder, et tu lis le fichier pour mettre en mémoire dans ton programme
//##writing the file
// L is a list of objects to save (caserne, caserne, preferences)
// fileName is the file to save settings
for all objects in L as objectToSave do
objectToSave.save(fileName); //each object will happen its content to the file
donecaserne
5 (nb de personnes)
paris (ville)
caserne
3
marseille
preferences
popupEnabled=true
...//##reading the file
while not end of fileName do
typeOfObjectToConstruct = fileName.readLine()
if(typeOfObjectToConstruct == caserne)
constructCaserne(fileName)
else if (typeOfObjectToConstruct == preferences)
constructPreferences(fileName)
doneNB_MAX:constant Integer := 200;
Type TabCaserne is array In Integer 1..NB_MAX of String;
monTab:TabCaserne;
nbEff :Integer;
nom:String;
begin
get(nbEff); -- ce sera le nbre de pompier
for k in 1..nbEff loop
put("Nom du pompier :");
get(nom);
monTab(k) := nom;
end loop;
-- donc en gros ici dans parler des spécificités en ada du type string que je contournerai, j'enregistre dans une case de mon tableau chaque nom de pompier de la caserne. C'est ce qui correspondrait en réalité à la première utilisation du programme. Par la suite, je désire que toutes ces informations soit à nouveau accessible.
for all case in monTab as object to save loop
objectToSave.save(filename);
end loop;
-- ***********************
-- Prologue de compilation
-- ***********************
with TEXT_IO;
with IO_EXCEPTIONS;
-- **************************************
-- Specification du paquetage utilisateur
-- **************************************
package ENTREES_SORTIES is
-- ***********************************************************************
-- Ce paquetage contient un sous-ensemble des operations d'entrees sorties
-- L'utilisateur n'a pas a connaitre la notion de genericite
-- Seules quelques operations concernant
-- les entiers,
-- les flottants,
-- les booleens,
-- les caracteres et
-- les chaines de caracteres
-- sont fournies.
-- ainsi que les exceptions les plus importantes
-- concernant les entrees-sorties
-- ***********************************************************************
-- =========================================================
-- Definition des paquetages necessaires aux entrees-sorties
-- =========================================================
package INT_IO is new text_io.integer_io(integer);
package FLT_IO is new text_io.float_io(float);
package BOOL_IO is new text_io.enumeration_io(boolean);
-- =======================================
-- Renommage de certains types necessaires
-- =======================================
subtype COUNT is text_io.count;
subtype POSITIVE_COUNT is text_io.positive_count;
subtype FIELD is text_io.field;
subtype NUMBER_BASE is text_io.number_base;
subtype TYPE_SET is text_io.type_set;
-- =================================
-- Renommage de certaines exceptions
-- =================================
DATA_ERROR : exception renames IO_EXCEPTIONS.data_error;
END_ERROR : exception renames IO_EXCEPTIONS.end_error;
-- ===============================
-- Operations exportees de TEXT_IO
-- ===============================
procedure GET (ITEM: out character) renames text_io.get;
procedure PUT (ITEM: in character) renames text_io.put;
procedure GET (ITEM: out string) renames text_io.get;
procedure PUT (ITEM: in string) renames text_io.put;
procedure GET_LINE (ITEM: out string; LAST: out natural) renames text_io.get_line;
procedure PUT_LINE (ITEM: in string) renames text_io.put_line;
procedure SKIP_LINE (SPACING : in POSITIVE_COUNT :=1) renames text_io.skip_line;
procedure NEW_PAGE renames text_io.new_page;
procedure SKIP_PAGE renames text_io.skip_page;
procedure NEW_LINE (SPACING: IN POSITIVE_COUNT:=1) renames text_io.new_line;
procedure SET_COL (TO: in POSITIVE_COUNT) renames text_io.set_col;
procedure SET_LINE(TO: in POSITIVE_COUNT) renames text_io.set_line;
function END_OF_LINE return boolean renames text_io.end_of_line;
function END_OF_FILE return boolean renames text_io.end_of_file;
-- ============================
-- Entrees et sorties d'entiers
-- ============================
procedure GET (ITEM: out integer; WIDTH: in field:=0)
renames INT_IO.get;
procedure PUT (ITEM: in integer;
WIDTH: in field := INT_IO.default_width;
BASE: in number_base := INT_IO.default_base) renames INT_IO.put;
-- ===============================
-- Entrees et sorties de flottants
-- ===============================
procedure GET (ITEM: out float;
WIDTH: in field := 0) renames FLT_IO.get;
procedure PUT (ITEM: in float;
FORE: in field := FLT_IO.default_fore;
AFT: in field := FLT_IO.default_aft;
EXP: in field := FLT_IO.default_exp) renames FLT_IO.put;
-- ==============================
-- Entrees et sorties de booleens
-- ==============================
procedure GET (ITEM: out boolean) renames BOOL_IO.get;
procedure PUT (ITEM: in boolean;
WIDTH: in field := BOOL_IO.default_width;
SET: in text_io.type_set := BOOL_IO.default_setting)
renames BOOL_IO. put;
end ENTREES_SORTIES;
Je vois bien que c'est complexe mais je ne vois pas vraiment par où attaquer ce morceaux.
mais je n'ai toujours pas bien saisi comment on le sauvegardait.
Pour écrire dans un fichier
Non, il n'y a aucun rapport entre les pointeurs du C et les entrées-sortie, dans n'importe quel langage.Là petit Hors-Sujet de mes souvenirs d'il y a 4-5 ans lorsque j'avais voulu commencer à apprendre le C.
Est ce que ce n'est pas une utilisation des pointeurs en C permettant de sauvegarder des données ? Je me souviens que j'avais décroché à ce moment là parce que je n'avais pas vraiment compris à quoi ça servait.
Ben oui, naturellement, mais il est vrai que si on fait une lecture, avoir une petite notion des pointeurs n'est pas inutile si on veut comprendre ce genre de code :fatal_error a écrit:fopen et fclose manipulent quand même des pointeurs de fichiers...
char texte[32];
float ValFloat;
int Nombre;
FILE *lec=fopen("Fichier.txt","rt");
char ligne[80];
fgets(ligne,79,lec);
sscanf(ligne,"%s %f %d", texte, &ValFloat, &Nombre);
Rockleader a écrit:Je sais bien sur que je ne vais pas retrouver de l'ADA dans mon milieu professionnel ou du moins ce sera très improbable, mais là ça n'a rien de professionnel ce que je veux réaliser. C'est autant pour faire un cadeau que pour me motiver à apprendre de nouveau trucs.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 13 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :