AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kompliziertes Problem mit Wochentagberechnung
Thema durchsuchen
Ansicht
Themen-Optionen

Kompliziertes Problem mit Wochentagberechnung

Ein Thema von Glados · begonnen am 28. Aug 2017 · letzter Beitrag vom 29. Aug 2017
Antwort Antwort
Seite 2 von 3     12 3      
Glados
(Gast)

n/a Beiträge
 
#11

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 14:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#12

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 14:52
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);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#13

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 14:57
Werde ich definitiv noch umsetzen.
Aber wieso schlägt denn ein Vergleich cbDay2.Checked := 8 in exclude; fehl? Die 8 ist ganz sicher da drin vorhanden.

Wie ich aktuell prüfe
Delphi-Quellcode:
cbDay2.Checked := 8 in exclude;
cbDay1.Checked := 4 in exclude;
cbDay0.Checked := 2 in exclude;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#14

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 15:17
Werde ich definitiv noch umsetzen.
Aber wieso schlägt denn ein Vergleich cbDay2.Checked := 8 in exclude; fehl? Die 8 ist ganz sicher da drin vorhanden.

Wie ich aktuell prüfe
Delphi-Quellcode:
cbDay2.Checked := 8 in exclude;
cbDay1.Checked := 4 in exclude;
cbDay0.Checked := 2 in exclude;

So funktionieren Sets aber nicht. Die 8 kann gar nicht im Set vorkommen, da die Wochentage nur von 0..6 definiert sind.

Delphi-Quellcode:
cbDay2.Checked := 2 in exclude; // Mittwoch
cbDay1.Checked := 1 in exclude; // Dienstag
cbDay0.Checked := 0 in exclude; // Montag
Oder besser gleich so deklarieren:

Delphi-Quellcode:
type
  TDayOfWeek = (dowMontag, dowDienstag, dowMittwoch, dowDonnerstag, dowFreitag, dowSamstag, dowSonntag);
  TDayOfWeekSet = set of TDayOfWeek;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#15

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 15:23
Ok hier noch einmal alles was ich bisher habe

Speichern
Delphi-Quellcode:
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;
Lesen
Delphi-Quellcode:
 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;
Speichern funktioniert, lesen leider nicht
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#16

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 15:30
Kennst du Cromis cron-scheduler? Du erfindest das Rad gerade erneut.


Ich hatte da 2014 mal drüber geschrieben:
https://entwickler.de/online/develop...al-114967.html

Die Cromis homepage geht gerade bei mir nicht:
http://web.archive.org/web/201603150...ron-scheduler/
Angehängte Dateien
Dateityp: zip Scheduler.zip (402,9 KB, 5x aufgerufen)
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#17

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 15:31
 ShowMessage(IntToStr(Byte(exclude))); // z.B.: 28 = Dienstag, Mittwoch, Donnerstag waren "checked"
Das stimmt schon mal nicht! 28 = 4 + 8 + 16 entspricht Mittwoch, Donnerstag, Freitag. Schau mal nach, was in deinen Checkbox.Tags wirklich steht.

Übrigens:
  aDayOfWeekSet := aDayOfWeekSet + [aCheckBox.Tag];
geht auch so:
  Include(aDayOfWeekSet, aCheckBox.Tag);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#18

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 15:38
Zitat:
Schau mal nach, was in deinen Checkbox.Tags wirklich steht.
Du hattest recht. Ich hatte eine 1-basierte Zählung in den Tags, nicht 0-basiert

Zitat:
Kennst du Cromis cron-scheduler? Du erfindest das Rad gerade erneut.
Vor Cron habe ich mich schon mein ganzes Leben lang erfolgreich versteckt was wohl daran liegt, dass ich es nicht leiden kann genau so wenig wie Linux.

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.

Geändert von Glados (29. Aug 2017 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#19

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 17:27
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#20

AW: Kompliziertes Problem mit Wochentagberechnung

  Alt 29. Aug 2017, 17:29
Du meinst damit die Controls dahinter die richtigen Captions bekommen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz