DateTime vergleichen (war: Date Time)



  • Hallo,
    ich hab ein Programm geschrieben, das nur Dateien kopieren soll, die zwischen einem bestimten zeitraum erstellt wurden. z.B.14.05.2000 - 07.06.2002
    Wenn ich jetzt aber dateien kopieren will, die ich heute erstellt habe und schreibe: 06.12.2004-24.08.2005, dann kopiert er nur die dateien bis zum 23.08.2005 , Warum?

    Mein Code sieht folgendermaßen aus:

    TDateTime FileDate = FileDateToDateTime(sr.Time);
    
    if(FileDate >= DateTimePicker1->DateTime && FileDate <= DateTimePicker2>DateTime)
    
    //usw.....
    

    Edit:
    Bitte aussagekräftige Überschriften wählen. danke!



  • if(FileDate >= DateTimePicker1->DateTime && FileDate <= DateTimePicker2>DateTime)
    

    es müsste doch wohl so aussehen:

    if(FileDate >= DateTimePicker1->DateTime && FileDate <= DateTimePicker2->DateTime)
    

    war wahrscheinlich nur ein Schreibfehler, aber was ist denn wenn du das ganze mit dem debugger durchgehst? was macht er dann an der Stelle (wenn FileDate <= DateTimePicker2->DateTime eintritt)

    mfg
    Tom



  • War ein schreibfehler, aber in meinem Programm steht es richtig



  • Hallo

    Kann den Fehler nicht nachvollziehen. Wenn ich ein Testprogrammm mit 3 DateTimePickern und folgender Überprüfung schreibe

    if(DateTimePicker1->DateTime >= DateTimePicker2->DateTime && DateTimePicker1->DateTime <= DateTimePicker3->DateTime)
        Caption = "Dazwischen";
      else
        Caption = "Nicht dazwischen";
    

    wird der Wert aus DateTimePicker1 auf den bereich zwischen DateTimePicker2 und ...3 inklusive der oberen Grenze getestet.

    bis bald
    akari



  • TdateTime hat auch immer eine Uhrzeit, auch wenn man nur Datum bestückt. Man sollte die Uhrzeit auf 0 setzen.



  • Hallo

    achso, klar. Bei FileDate ist auch immer noch die Uhrzeit dabei. Ist aber kein Problem, die kann man einfach so rausfiltern

    TDateTime FileDate = int(FileDateToDateTime(sr.Time));
    

    bis bald
    akari



  • Es geht trotzdem nicht,
    mein Quelltext sieht momentan so aus:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     Edit3->Text=Edit1->Text + Edit4->Text + "*.*";
    
     TSearchRec sr;
     int a=0;
     int b=0;
     bool c=false;
      int iAttributes = 0;
    
      iAttributes |= faReadOnly * CheckBox1->Checked; 
      iAttributes |= faHidden * CheckBox2->Checked; 
      iAttributes |= faSysFile * CheckBox3->Checked;
      iAttributes |= faVolumeID * CheckBox4->Checked; 
      iAttributes |= faDirectory * CheckBox5->Checked; 
      iAttributes |= faArchive * CheckBox6->Checked; 
      iAttributes |= faAnyFile * CheckBox7->Checked;
    
      if (FindFirst(Edit3->Text, iAttributes, sr) == 0)
    
      { 
    
        do 
        {
          if ((sr.Attr & iAttributes) == sr.Attr) 
          { 
    
            TDateTime FileDate = int(FileDateToDateTime(sr.Time));
           // TDateTime FileDate = FileDateToDateTime(sr.Time);
            if(FileDate >= DateTimePicker1->DateTime && FileDate <= DateTimePicker2->DateTime)
              {
    
             ListView1->Items->Add();
             ListView1->Items->Item[a]->Caption = sr.Name;
             ListView1->Items->Item[a]->SubItems->Text = FileDate;
             a++;
    
             Edit5->Text = Edit1->Text + Edit4->Text + sr.Name;
             ListView2->Items->Add();
             ListView2->Items->Item[b]->Caption = Edit5->Text;
             b++;
    
             Edit7->Text = (Edit2->Text + "\\");
             if(!MoveFiles(Edit5->Text, Edit7->Text ))
                    c=true;
             else
             {
    
                    ShowMessage("Fehler aufgetreten !");
                    FindClose(sr);
             }
    
           }
    
          }
        } while (FindNext(sr) == 0); 
    
        FindClose(sr);
       if (c=true);
       ShowMessage("Verschieben erfolgreich!");
    
      }
    
    }
    


  • Das mit der Zeit trifft auch auf DateTimePicker1->DateTime zu.



  • Hää?
    das kapier ich jetzt nit?
    😕


Anmelden zum Antworten