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 | 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 OptionenVariablen;
with SchreibeOptionen;
with Fehlermeldungssystem;
-- 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 EinlesenSpielendeEinstellungenLogik is
procedure SpielendeEinstellungen
is begin
case
Exists (Name => VerzeichnisKonstanten.SpielendeEinstellungen)
is
when False =>
OptionenVariablen.SpielendeStandardeinstellungenLaden;
return;
when True =>
Open (File => DateiSonstigeEinstellungen,
Mode => In_File,
Name => VerzeichnisKonstanten.SpielendeEinstellungen,
Form => "WCEM=8");
end case;
case
SpielendeEinstellungenDurchgehen (LadenPrüfenExtern => False,
DateiLadenExtern => DateiSonstigeEinstellungen)
is
when True =>
Nullwert := SpielendeEinstellungenDurchgehen (LadenPrüfenExtern => True,
DateiLadenExtern => DateiSonstigeEinstellungen);
when False =>
OptionenVariablen.SpielendeStandardeinstellungenLaden;
end case;
Close (File => DateiSonstigeEinstellungen);
exception
when StandardAdaFehler : others =>
Fehlermeldungssystem.Logik (FehlermeldungExtern => "EinlesenSpielendeEinstellungenLogik.SpielendeEinstellungen: Konnte nicht geladen werden: " & Decode (Item => Exception_Information (X => StandardAdaFehler)));
OptionenVariablen.SpielendeStandardeinstellungenLaden;
case
Is_Open (File => DateiSonstigeEinstellungen)
is
when True =>
Close (File => DateiSonstigeEinstellungen);
when False =>
null;
end case;
end SpielendeEinstellungen;
function SpielendeEinstellungenDurchgehen
(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 =>
ZahlenDatentypen.EigenesPositive'Read (Stream (File => DateiLadenExtern),
Autospeichernwert);
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
SchreibeOptionen.GanzeSpielendeEinstellungen (EinstellungenExtern => (
AktuellerAutospeichernwert => Autospeichernwert
));
return True;
end if;
exception
when StandardAdaFehler : others =>
Fehlermeldungssystem.Logik (FehlermeldungExtern => "EinlesenSpielendeEinstellungenLogik.SonstigeEinstellungenDurchgehen: Konnte nicht geladen werden: "
& Decode (Item => Exception_Information (X => StandardAdaFehler)));
return False;
end SpielendeEinstellungenDurchgehen;
end EinlesenSpielendeEinstellungenLogik;
|