#include <print>
#include "tmemtpl_01.h"
using namespace std::string_literals;

int main()
{
    // Datei-Objekt definieren
    SaveFile testFile("c:/temp/test.dat"s);
    // 3 Daten in Datei schreiben
    char cVal = 'A';
    long double ldVal = 1.1;
    std::string anyString("Dies ist ein String"s);
    testFile.Write(cVal);
    testFile.Write(ldVal);
    testFile.Write(anyString);
    // Geschriebene Daten zur Kontrolle ausgeben
    std::println("Geschriebene Daten: {}, {}, {}",
                cVal, ldVal, anyString);
    // Zur Kontrolle Daten auf einen anderen Wert setzen
    cVal = 0;
    ldVal = 0;
    anyString = "";
    // Dateizeiger zurücksetzen
    testFile.Reset();
    // Nun versuchen alle Daten wieder einzulesen
    // Zum Testen einmal die 1. oder 2. Zeile auskommentieren
    try
    {
        testFile.Read(cVal);
        testFile.Read(ldVal);
        testFile.Read(anyString);
    }
    catch (std::string& errMsg)
    {
        std::println("Fehler: {}", errMsg);
        exit(1);
    }
    // Eingelesen Daten zur Kontrolle ausgeben
    std::println("Eingelesene Daten: {}, {}, {}",
                cVal, ldVal, anyString);
    // Die geoeffnete Datei wird automatisch geschlossen,
    // da der dtor von testFile beim Beenden des Programms
    // aufgerufen wird
}
