bin gerade dabei, gewisse daten beim laufenden Betrieb zu speichern.
dazu verwende ich folgende zeilen.
Code: Alles auswählen
Unit udata
Code: Alles auswählen
TProgset = Record
Menst, Stark, Periode: TColor;
Font: String;
end;
T_User = record
Name,
Lastname,
Geburtsort,
Geburtstag : String;
Groesse,
Gewicht,
BMI : real;
end;
TUser = class
FFilename, FPath, FExt: string;
fUser: T_User;
fName, fLastname, fGeburtsort, fGeburtstag: String;
fGroesse, fGewicht, fBMI: real;
fProgSet: TProgSet;
private
// fFarbe: Array[0..2] of TColor;
// function GetUser: T_User;
public
constructor Create;
destructor Done;
procedure SetColor(Progset: TProgSet);
procedure SetUser(User: T_User);
property User: T_User read fUser write SetUser;
property Farben: TProgSet read fProgSet write SetColor;
end;
constructor TUser.Create;
begin
inherited;
fPath := ExtractFilePath(GetAppConfigFile(false));
fExt := 'Setting';
fUser.Name := 'Maxim';
fUser.Lastname := 'Mustermann';
fUser.Geburtsort := 'Musterhausen';
fUser.Geburtstag := '01.01.2000';
fUser.Gewicht := 70.0;
fUser.Groesse := 1.65;
fUser.BMI := StrToFloat(FloatToStrF(70.0/(1.65*1.65), ffnumber, 0, 2));
fName := 'Maxim';
fLastname := 'Mustermann';
fProgSet.Menst:= clRed;
fProgSet.Stark:= clBlue;
fProgSet.Periode:= clgreen;
fProgSet.Font:= 'default';
SetColor(fProgset);
SetUser(fUser);
end;
Destructor TUser.Done;
begin
inherited;
end;
procedure TUser.SetColor(ProgSet: TProgSet);
var s: String;
begin
fFilename:= Format('%s%s', [fPath, fName+fLastname+'.'+fExt]);
if fFileName <> '' then
begin
if FileExists(FFilename) then DeleteFile(FFilename);
with TIniFile.Create(fFileName) do try
s := Format('[%s]', [fName, fLastname]);
WriteString(s, 'Farbe der Menstruation', ColorToString(ProgSet.Menst));
WriteString(s, 'Farbe der Regelstärke', ColorToString(ProgSet.Stark));
WriteString(s, 'Farbe der Prognose', ColorToString(ProgSet.Periode));
WriteString(s, 'Schriftart für das Programm', Progset.Font);
finally
Free;
end;
end;
end;
procedure TUser.SetUser(User: T_User);
var s: String;
begin
fUser:= User;
fFilename:= Format('%s%s', [fPath, fName+'.'+fLastname]);
if fFileName <> '' then
begin
if FileExists(FFilename) then DeleteFile(FFilename);
with TIniFile.Create(fFileName) do try
s := Format('[%s]', [fName, fLastname]);
WriteString(s, 'Name', fUser.Name);
WriteString(s, 'Nachname', fUser.Lastname);
WriteString(s, 'Geburtsort', fUser.Geburtsort);
WriteString(s, 'Geburtstag', fUser.Geburtstag);
WriteFloat(s, 'Gewicht', fUser.Gewicht);
WriteFloat(s, 'Größe', fUser.Groesse);
WriteFloat(s, 'BMI', fUser.BMI);
finally
Free;
end;
end;
end;
der erste aufruf erfolgt über folgende Zeile in der Unit3
Code: Alles auswählen
User:= TUser.Create;

Code: Alles auswählen
procedure TForm3.Button1Click(Sender: TObject);
begin
Settings.Clear;
ProgSet.Menst:= Label6.Font.Color;
ProgSet.Stark:= Label7.Font.Color;
ProgSet.Periode:= Label9.Font.Color;
ProgSet.Font:= Label10.Font.Name;
_User.Name:= Edit1.Text;
_User.Lastname:= Edit2.Text;
_User.Geburtsort:= Edit3.Text;
_User.Geburtstag:= Edit4.Text;
User.Farben:= ProgSet; //<--- Hier tritt der Access violation auf, wenn ich dies aber in der IDE ausführe kommt der SIGSEGV auf.
end;