![]() |
AW: Kompliziertes Problem mit Wochentagberechnung
Ok das wusste ich nicht. Ich dachte das Casten beim Auslesen + das "in" würden reichen.
Mh das funktioniert auch nicht, obwohl Byte(exclude) nun "8" entspricht. |
AW: Kompliziertes Problem mit Wochentagberechnung
Oder ganz komfortabel mit einem Record Helper:
Delphi-Quellcode:
TDayOfWeekSetHelper = record helper for TDayOfWeekSet
function GetAsInteger: Integer; procedure SetAsInteger(const Value: Integer); property AsInteger: Integer read GetAsInteger write SetAsInteger; end; function TDayOfWeekSetHelper.GetAsInteger: Integer; begin Result := Byte(Self); end; procedure TDayOfWeekSetHelper.SetAsInteger(const Value: Integer); begin Byte(Self) := Value; end; ... IniS.WriteInteger(section, ident, aDayOfWeekSet.AsInteger); ... exclude.AsInteger := IniS.ReadInteger(section, ident, 0); |
AW: Kompliziertes Problem mit Wochentagberechnung
Werde ich definitiv noch umsetzen.
Aber wieso schlägt denn ein Vergleich
Delphi-Quellcode:
fehl? Die 8 ist ganz sicher da drin vorhanden.
cbDay2.Checked := 8 in exclude;
Wie ich aktuell prüfe
Delphi-Quellcode:
cbDay2.Checked := 8 in exclude;
cbDay1.Checked := 4 in exclude; cbDay0.Checked := 2 in exclude; |
AW: Kompliziertes Problem mit Wochentagberechnung
Zitat:
So funktionieren Sets aber nicht. Die 8 kann gar nicht im Set vorkommen, da die Wochentage nur von 0..6 definiert sind.
Delphi-Quellcode:
Oder besser gleich so deklarieren:
cbDay2.Checked := 2 in exclude; // Mittwoch
cbDay1.Checked := 1 in exclude; // Dienstag cbDay0.Checked := 0 in exclude; // Montag
Delphi-Quellcode:
type
TDayOfWeek = (dowMontag, dowDienstag, dowMittwoch, dowDonnerstag, dowFreitag, dowSamstag, dowSonntag); TDayOfWeekSet = set of TDayOfWeek; |
AW: Kompliziertes Problem mit Wochentagberechnung
Ok hier noch einmal alles was ich bisher habe
Speichern
Delphi-Quellcode:
Lesen
var
aDayOfWeekSet: TDayOfWeekSet ; begin for i := 0 to 6 do begin aCheckBox := (FindComponent('cbDay' + IntToStr(i)) as TCheckBox); if Assigned(aCheckBox) and aCheckBox.Checked then aDayOfWeekSet := aDayOfWeekSet + [aCheckBox.Tag]; // Das Tag jeder CheckBox enthält Zahlen von 0-6 (Montag-Sonntag) end; IniS.WriteInteger(section, ident, Byte(aDayOfWeekSet)); end;
Delphi-Quellcode:
Speichern funktioniert, lesen leider nicht :(
Byte(exclude):= IniS.ReadInteger(section, ident, 0);
ShowMessage(IntToStr(Byte(exclude))); // z.B.: 28 = Dienstag, Mittwoch, Donnerstag waren "checked" cbDay2.Checked := 2 in exclude; cbDay1.Checked := 1 in exclude; cbDay0.Checked := 0 in exclude; |
AW: Kompliziertes Problem mit Wochentagberechnung
Liste der Anhänge anzeigen (Anzahl: 1)
Kennst du Cromis cron-scheduler? Du erfindest das Rad gerade erneut.
Ich hatte da 2014 mal drüber geschrieben: ![]() Die Cromis homepage geht gerade bei mir nicht: ![]() |
AW: Kompliziertes Problem mit Wochentagberechnung
Zitat:
Übrigens:
Delphi-Quellcode:
aDayOfWeekSet := aDayOfWeekSet + [aCheckBox.Tag];
geht auch so:
Delphi-Quellcode:
Include(aDayOfWeekSet, aCheckBox.Tag);
|
AW: Kompliziertes Problem mit Wochentagberechnung
Zitat:
Zitat:
Klar, das ist extrem flexibel, keine Frage! Aber das jetzt alles umbauen... nee. Es funktioniert nun alles Danke an alle die geholfen haben dieses/mein Mysterium zu lösen. |
AW: Kompliziertes Problem mit Wochentagberechnung
Wenn man das als SET mit "Namen" deklariert hat, könnte man auch über die TypeInfo oder RTTI das SET von/in einen String umwandeln.
|
AW: Kompliziertes Problem mit Wochentagberechnung
Du meinst damit die Controls dahinter die richtigen Captions bekommen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz