1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 | with Ada.Directories; use Ada.Directories;
with Ada.Strings.UTF_Encoding.Wide_Wide_Strings; use Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
with Ada.Exceptions; use Ada.Exceptions;
with VerzeichnisKonstanten;
with SchreibeEinstellungenTon;
with Fehlermeldungssystem;
with EinstellungenTon;
-- Beim Record kann ich theoretisch alles beliebig neu ordnen, beim Einlesen/Schreiben muss ich aber immer alles neue an das Ende anhängen!
package body EinlesenToneinstellungenLogik is
procedure Toneinstelllungen
is begin
case
Exists (Name => VerzeichnisKonstanten.Toneinstellungen)
is
when False =>
EinstellungenTon.StandardeinstellungenLaden;
return;
when True =>
Open (File => DateiToneinstellungen,
Mode => In_File,
Name => VerzeichnisKonstanten.Toneinstellungen,
Form => "WCEM=8");
end case;
case
ToneinstellungenDurchgehen (LadenPrüfenExtern => False,
DateiLadenExtern => DateiToneinstellungen)
is
when True =>
Nullwert := ToneinstellungenDurchgehen (LadenPrüfenExtern => True,
DateiLadenExtern => DateiToneinstellungen);
when False =>
EinstellungenTon.StandardeinstellungenLaden;
end case;
Close (File => DateiToneinstellungen);
exception
when StandardAdaFehler : others =>
Fehlermeldungssystem.Logik (FehlermeldungExtern => "EinlesenToneinstellungenLogik.Toneinstelllungen: Konnte nicht geladen werden: " & Decode (Item => Exception_Information (X => StandardAdaFehler)));
EinstellungenTon.StandardeinstellungenLaden;
case
Is_Open (File => DateiToneinstellungen)
is
when True =>
Close (File => DateiToneinstellungen);
when False =>
null;
end case;
end Toneinstelllungen;
function ToneinstellungenDurchgehen
(LadenPrüfenExtern : in Boolean;
DateiLadenExtern : in File_Type)
return Boolean
is begin
if
LadenPrüfenExtern = False
then
case
End_Of_File (File => DateiLadenExtern)
is
when True =>
return False;
when False =>
Float'Read (Stream (File => DateiLadenExtern),
Soundlautstärke);
end case;
case
End_Of_File (File => DateiLadenExtern)
is
when True =>
Musiklautstärke := EinstellungenTon.ToneinstellungenStandard.Musiklautstärke;
when False =>
Float'Read (Stream (File => DateiLadenExtern),
Musiklautstärke);
end case;
-- Diese Prüfung muss am Ende aller Einlesefunktionen stehen, um sicher zu sein dass die Datei vollständig eingelesen wurde!
-- Sollte Probleme mit geänderten Datentypen teilweise vorbeugen.
return End_Of_File (File => DateiLadenExtern);
else
SchreibeEinstellungenTon.GesamteToneinstellungen (EinstellungenExtern => (
Soundlautstärke => Soundlautstärke,
Musiklautstärke => Musiklautstärke
));
return True;
end if;
exception
when StandardAdaFehler : others =>
Fehlermeldungssystem.Logik (FehlermeldungExtern => "EinlesenToneinstellungenLogik.ToneinstellungenDurchgehen: Konnte nicht geladen werden: " & Decode (Item => Exception_Information (X => StandardAdaFehler)));
return False;
end ToneinstellungenDurchgehen;
end EinlesenToneinstellungenLogik;
|