Blady
2020-08-08 09:48:03 UTC
Bonjour,
J'ai une variable F3 (dans mon programme de test) qui est est utilisée
pour avoir soit un fichier sur disque soit la sortie standard.
Ada.Text_ÏO.File_Type étant un type limité, je pensais utiliser le type
File_Access (procédure P1) ou un accès anonyme (procédure P2) mais je
n'ai pas de succès :
1. with Ada.Text_IO; use Ada.Text_IO;
2. procedure Essais_02 is
3. procedure P1 is
4. F1 : File_Type;
5. begin
6. Create (F1);
7. declare
8. Cond : Boolean;
9. F2 : File_Access := new File_Type;
|
|
12. begin
13. if Cond then
14. F3 := Standard_Output;
15. else
16. F3 := F2;
17. end if;
18. end;
19. end;
20. procedure P2 is
21. begin
22. declare
23. Cond : Boolean;
24. F2 : access File_Type := new File_Type;
25. F3 : access File_Type;
26. begin
27. if Cond then
28. F3 := Standard_Output;
|
30. Create (F2.all);
31. F3 := F2;
32. end if;
33. end;
34. end;
35. begin
36. null;
37. end Essais_02;
Quel est le moyen pour avoir les deux possibilités avec F3 ?
Merci Pascal.
https://blady.pagesperso-orange.fr
J'ai une variable F3 (dans mon programme de test) qui est est utilisée
pour avoir soit un fichier sur disque soit la sortie standard.
Ada.Text_ÏO.File_Type étant un type limité, je pensais utiliser le type
File_Access (procédure P1) ou un accès anonyme (procédure P2) mais je
n'ai pas de succès :
1. with Ada.Text_IO; use Ada.Text_IO;
2. procedure Essais_02 is
3. procedure P1 is
4. F1 : File_Type;
5. begin
6. Create (F1);
7. declare
8. Cond : Boolean;
9. F2 : File_Access := new File_Type;
|
initialization required for access-to-constant allocator
10. F2b : File_Access := new File_Type'(F1);|
initialization not allowed for limited types
11. F3 : File_Access;12. begin
13. if Cond then
14. F3 := Standard_Output;
15. else
16. F3 := F2;
17. end if;
18. end;
19. end;
20. procedure P2 is
21. begin
22. declare
23. Cond : Boolean;
24. F2 : access File_Type := new File_Type;
25. F3 : access File_Type;
26. begin
27. if Cond then
28. F3 := Standard_Output;
|
access-to-constant operand type not allowed
29. else30. Create (F2.all);
31. F3 := F2;
32. end if;
33. end;
34. end;
35. begin
36. null;
37. end Essais_02;
Quel est le moyen pour avoir les deux possibilités avec F3 ?
Merci Pascal.
https://blady.pagesperso-orange.fr