Autor Beitrag
bocky3
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 24.04.05 10:48 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if FileExists('bilder\save.bocky') then
   begin
    DOSDatum:=FileAge(Dateiname);
    WinDatum:=FileDateToDateTime(DOSDatum);

     if Now - WinDatum =  30 then
      begin
       {usw.}


es hackt an der stelle:
ausblenden Delphi-Quelltext
1:
if Now - WinDatum =  30 then					


is ja auch logisch.
ich rechne ein datum in der form: 00:00:00 minus einem der form 00:00:00
das könnte der fehler sein.
muss ich das in nen string umwandeln?
wenn ja, wie mach ich das?

mfg bocky
fvolk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 203

Win XP (Home & Pro)
Delphi 2005 Pers
BeitragVerfasst: So 24.04.05 11:24 
Es gibt nur den Gleich-Operator (=), sondern auch Kleiner-Gleich (<=), Größer-Gleich (>=) sowie Kleiner und Größer als.

Damit dürfte es klappen.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
(René Descartes)
bocky3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 24.04.05 12:09 
ähm, ne nich ganz
das ">" hab ich in ner folgenden if schleife gehabt.
hier
ausblenden Delphi-Quelltext
1:
if Now - WinDatum =  30 then					

nleibt es hängen, mit ner fehlermeldung, sinngemäß: unerlaubte rechenoperation
das is mein prob
fvolk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 203

Win XP (Home & Pro)
Delphi 2005 Pers
BeitragVerfasst: So 24.04.05 13:23 
1. 'ne If-Schleife gibt's nicht.
2. Verstehe ich nicht ganz, wie du mit dem Quellcodeausschnitt, den du gepostet hast, dein Problem lösen willst.

TDateTime ist nichts anderes als ein ganz normaler Double-Wert (vgl. Delphi-Hilfe, Stichwort "TDateTime"). Im folgenden Beispiel wird der Code foo(...) ausgeführt, wenn Datum2 mehr als (oder genau) 30 Tage vor Datum1 liegt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  Datum1, Datum2: TDateTime;
begin
  if (Datum1 - Datum2) >= 30 then
  begin
    foo(...);
  end;
end;


Delphi-Hilfe hat folgendes geschrieben:

Wenn beide TDateTime-Werte positiv sind, brauchen Sie zur Ermittlung der Tage zwischen zwei Datumsangaben die beiden Werte nur voneinander zu subtrahieren. Um eine Datums-/Zeitangabe um eine bestimmte Anzahl von Tagen zu erhöhen, addieren Sie einfach die Anzahl zur Datums-/Zeitangabe hinzu.

Wenn Sie mit negativen TDateTime-Werten arbeiten, muss der Zeitanteil separat berechnet werden. Der Zeitanteil gibt den Bruchteil eines 24-Stundentages ohne Berücksichtigung des Vorzeichens des TDateTime-Wertes wieder. 6:00 am 29.12.1899 ist –1,25, nicht –1 + 0,25, was –
0,75 ergäbe. Zwischen – 1 und 0 gibt es keine TDateTime-Werte.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
(René Descartes)
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: So 24.04.05 13:45 
ausblenden Delphi-Quelltext
1:
2:
uses
  DateUtils;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure MyProcedure;
var
  FileDate: Integer;
  DateTime: TDateTime;
begin

  if FileExists(FileName) then
  begin
    FileDate := FileAge(FileName);
    DateTime := FileDateToDateTime(FileDate);
    if DaysBetween(Now, DateTime) > 30 then
    begin
      // Datei ist älter als 30 Tage
    end;
  end;

end;

_________________
Ciao, Sprint.
bocky3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 24.04.05 13:46 
meine delphi hilfe is auf englisch... :cry:
ich hab nich den gesamten quelltext gepostet, da as nich relevant is.
ob er jetzt beim > oder = hackt, is egal.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if FileExists('bilder\save.bocky') then
   begin
    DOSDatum:=FileAge('bilder\save.bocky');
     if Now - Windatum >= 30 then
      begin
       DeleteFile('bilder\save.bocky');
      end
   end;

neuer versuch (auch stark vereinfacht), zumindest ohne fehlermeldung.
ausblenden Delphi-Quelltext
1:
WinDatum:=FileDateToDateTime(DOSDatum);					

hab ich rausgenommen

mfg burn
fvolk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 203

Win XP (Home & Pro)
Delphi 2005 Pers
BeitragVerfasst: So 24.04.05 19:05 
Das ist ein schöner Versuch und es gibt auch keine Fehlermeldung. Das heißt aber nicht, dass es keinen Fehler gibt. Datumsangaben von Dateien werden anders gespeichert als TDateTime-Werte. Deshalb hast du doch wohl FileDateToDateTime benutzt. Ich wüsste nicht, was am Code von user profile iconSprint falsch sein sollte.

Sonst wäre das in etwa wie Äpfel von Birnen abziehen und in dem entstandenen Kompott dann nach Kirschen zu suchen. (Ok, war vielleicht etwas zu plastisch...)

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
(René Descartes)
bocky3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 24.04.05 20:15 
ich hab sprints code übersehen (sorry), da er nach mir gepostet hatte.
zudem war ich den nachmittag anders beschäftigt, sodass ich nich on war und damit konnte ich sprints code nich testen (sorry, nochmals). sprints code funktioniert gut.
@ fvolk das meines nich unbedingt funzen muss ist mir durchaus bewusst.
auch weiß ich nich was ich dir getan hätte, dass dein post etwas feindseliges sein müsste.
(wenn ich da was falsch interpretiert habe, sry)
Zitat:

Das ist ein schöner Versuch und es gibt auch keine Fehlermeldung. Das heißt aber nicht, dass es keinen Fehler gibt.

ich bin jeder hilfe sehr dankbar. mein unwissen ist zwar groß, allerdings bin ich auch lehrsam.
mein prob hat sich dank euch gelöst. thx @ all
fvolk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 203

Win XP (Home & Pro)
Delphi 2005 Pers
BeitragVerfasst: Mo 25.04.05 18:14 
user profile iconbocky3 hat folgendes geschrieben:
auch weiß ich nich was ich dir getan hätte, dass dein post etwas feindseliges sein müsste.


Sorry, das war sicherlich nicht feindselig gemeint. Ich hatte mich nur ein wenig gewundert, warum du nicht auf user profile iconSprints Lösung eingegangen bist. (Ist ja jetzt geklärt.) Leider treiben sich im Netz zu viele rum, die nur Deppen suchen, die ihnen jedes Problem mundgerecht lösen, aber keine Lust haben, selbst fünf Zentimeter zu denken. Da reagiere ich oft mal ein wenig über - ich bitte das zu verzeihen.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
(René Descartes)