Re: Open / Create
Thomas De Contes <[email protected]> Sat, 30 May 2020 22:17:41 +0200
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Le 30 mai 2020 à 07:18, Jean-Pierre Rosen a écrit :
> Le 30/05/2020 à 04:30, Thomas De Contes a écrit :
>>
>> idéalement, j'aurais aimé économiser une condition sur l'existence du fichier, en écrivant sur une seule ligne de quoi :
> type Open_Mode is (Create, Append);
> -- Create: the file must not exist, unless Overwrite_Option
> -- Append: if the file exists, it is appended to, unless Overwrite_Option
la combinaison de Append et de Overwrite_Option, c'est un peu curieux
moi j'aurais fait quelque chose du genre
type Open_Mode is (Create, Append, Overwrite);
> begin
> case Mode is
> when Create =>
> Open (File, Out_File, Name);
>
> -- File exists
> Close (File);
> raise Overwrite_Error;
> when Append =>
> Open (File, Append_File, Name);
> -- OK if file exists
> end case;
pourquoi ne simplifies tu pas en
Open (File, Append_File, Name);
case Mode is
when Create =>
-- File exists
Close (File);
raise Overwrite_Error;
when Append =>
-- OK if file exists
end case;
?
n'as tu pas peur que "Open (File, Out_File, Name);" te vide le fichier existant ?
ou alors c'est ce que tu souhaites ?
>
> exception
> when Name_Error =>
> -- File does not exist (either mode)
> Create (File, Out_File, Name);
> end;
>> - créer le fichier s'il n'existe pas,
>> - écrire à la suite, sans effacer le contenu, s'il existe
si je comprends bien, tu me suggères de faire
begin
Open (File, Append_File, Name);
exception
when Name_Error =>
-- File does not exist
Create (File, Out_File, Name);
end;
plutôt que
if Ada.Directories.Exists( Name ) then
Open (File, Append_File, Name);
else
Create (File, Out_File, Name);
end if;
?
est ce que, quand on fait des appels fréquents comme pour un log de debug, l'un des 2 est plus couteux que l'autre ?
est ce que c'est simplement pour éviter un "with Ada.Directories;" ?
>>
>> si je n'ai pas fait d'erreur,
>> Ada.Sequential_IO.Open permet de créer un fichier,
>> mais pas Ada.Text_IO.Open ni Ada.Streams.Stream_IO.Open ?
> Non, tous les Open marchent pareil (il n'y a qu'une seule description
> dans le manuel)
ok
(désolé, je me suis fié à du vieux code que je n'ai pas testé récemment, seulement relu)
c'est bizarre,
comparant :
http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-A-10-1.html
http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-A-12-1.html
on dirait que le A.10.1 a été tronqué !
>
>> je ne vois toujours pas l'utilité de Create (... Append_File ...), puisque c'est l'équivalent de Create (... Out_File ...)
>> (donc ça ne peut pas se rendre utile dans mon cas)
> Disons que c'est là parcequ'on ne l'a pas interdit, ça ne fait aucun mal.
quand il y a quelque chose qui me parait pas logique, ça m'agace que ça ne soit pas interdit, pour nous empêcher de faire des bêtises (puisqu'en principe c'est ça l'"esprit" d'ada)
merci pour toutes tes réponses :-)
(j'ai toujours des questions qui suivent, mais ça fait avancer :-) )
--
Téléassistance / Télémaintenance
http://invites.biocer.fr/thomas-de-contes/
_______________________________________________
Ada-france mailing list
[email protected]
https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france