003
03.08.2006, 15:34 Uhr
Moz-Tec
|
Hallo Leute,
hab da noch ne ganz einfache Lösung zum ermitteln des Datum und der Urhzeit wann eine Datei erstellt worden ist.
[/cpp] // Alter der Datei feststellen und in Speicher schreiben int Datum; Datum = FileAge(FileListBox1->FileName);
// Dateiname und Datum in Listbox eintragen ListBox1->Items->Add(FileDateToDateTime(Datum);
C++: |
So und jetzt kommt´s, wie sortiere ich die Dateien nach Alter, dass die Aktuellste Datei die letzte ist. Einen Ansatz habe ich schon mal aber wer kann mir weiter helfen?
C++: |
void __fastcall TForm1::Button1Click(TObject *Sender) { // Puffer zum ermitteln des Alter der Dateien. int Buffer[500]; int Datum;
// Speicher vorbereiten für max. 500 Dateien. for ( int i = 0 ; i < 500 ; i++) { // Speicher löschen. Buffer[i] = NULL; } // Index auf erste Datei setzen. FileListBox1->ItemIndex = 0;
// Alter der Datei feststellen und in den Speicher schreiben. for (int Index = FileListBox1->ItemIndex ; Index < FileListBox1->Items->Count ; Index++ ) { // Erstellungsdatum und Zeit in Intger-Wert ermitteln. // Dieser Wert kann dann verglichen in sortiert werden. Datum = FileAge(FileListBox1->FileName);
// In Puffer schreiben zum weiteren verarbeiten Buffer [Index] = Datum;
/* Ich denke hier sollte dann noch was passieren!!! Wer kann mir hier helfen??? Hier sollten dann die Dateien nach Alter sortiert werden. Mit der Hilfe und der Sortierfunkruion "qsort" tue ich mir schwer. Wer kanns mir erklären? Ein Ansatz wäre echt super */
// Dateiname und Datum in Listbox dem Alter entsprechend der Reihe nach eintragen. ListBox1->Items->Add(FileListBox1->FileName + " " + FileDateToDateTime(Datum)); FileListBox1->ItemIndex++; } }
|
Ich hoffe es ist jemand so nett und kann helfen. Mit Zeigern hab ioch da meine Probleme.
Danke im voraus für eure Hilfe. |
|
|
|
004
09.08.2006, 12:20 Uhr
Moz-Tec
|
Hallo Leute,
schade dass niemand eine Antwort auf dieses Problem weiß. Habe aber selbst daran gebrühtet und die (eine mögliche) Lösung gefunden.
Schritt 1: Ermitteln des Erstellungsdatum und Uhrzeit wie oben schon beschrieben.
Schritt 2: Name der Datei umbenennen in Datum und Urzeit. Wichtig auf das Format des Datum und der Uhrzeit achten! Falsch: z.B 09.08.2006 20:15:59 Richtig: z.B. 09-08-2006 20-15-59 Diese Teile habe ich im Hilfe System gefunden und weiter ausgebaut.
C++: |
// Datum formatieren DateOrder = doDDMMYY; DateSeparator = '-'; DateFullYear = true; DateLeadZero = true; // Uhrzeit formatieren LongDateFormat; TimeSeparator = '-';
// Datum und Zeit Ermitteln int ZeiDatum; ZeitDatum = FileAge(FileListBox1->FileName);
AnsiString Neu = FileDateToDateTime(ZeitDatum) + '.jpg' ); AnsiString Alt = FileListBox1->FileName;
/* Umbenennen der Datei */ if (FileExists(Alt) { RenameFile(Alt,Neu); } else { z.B. Ausgabe eine MessageBox das ein Fehler beim Umbenennen aufgetreten ist! }
|
Schritt 3: Hier wird nun das gemacht was ich eigentlich möchte !!! Und zwar autumatisch von der FileListBox! FileListBox updaten, damit die Reihenfolge der Anzeige der FileListBox das Datum und Uhrzeit neu auf listet und damit die Erstellungsreihenfolge der Dateien von Index 0 bis Index n richtig gegeben ist.
Schritt 4: Nun den Endgültigen Name der Datei über ein Edit Feld und eine lokale Zählervariable bestimmen und nochmal die Datei umbenennen.
Schritt 5: FileListBox noch mal updaten, fertig.
Natürlich ist das nicht die komplette fertige Lösung, man muss immer noch herausfinden wieviele Dateien vorhanden sind und die Zählervariable einbauen. Das Umbenennen ist mit einer Forschleife dann nur noch Formsache. Also viel Spaß mit dieser Lösung.
Man sieht es geht sehr viel wenn man nur einen kleinen Ansatz hat. Danke noch mal an Hans.
Gruß Reiner
|
|
|
|
005
04.10.2006, 12:44 Uhr
Moz-Tec
|
Gut hab´s jetzt auch bemerkt, dass dies nicht die richtige Lösung ist. das Problem ist immer noch das Sortieren nach Datum. Da der Explorer bzw. die FileListBox den Dateinamen Alfanummerisch und nicht nummerisch anzeigt. So ist das Problem das Daten wie z.B. 21.08.2006 22.08.2006 und 21.09.2006 so nach einander sortiert werden.
Reihenfolge 1 21-08-2006.jpg 21-09-2006.jpg 22-08-2006.jpg
Gewünschtes Anzeige Format wäre
Reíhenfolge 2 21-08-2006.jpg 21-09-2006.jpg 22-09-2006.jpg
Wie erreiche ich, dass in der FilelistBox die Reihenfolge 2 nach Erstellungsdatum angezeigt wird? Kann mir bitte dabei da jemand helfen? Hat jemand eine Idee wie ich das sonst noch hin bekommen? Die Idee mit der qsort() Funktion funktioniert nicht wie ich das gerne hätte, obwohl ich das Datum in eine Integerzahl wandle.
Also Leute lasst mich nicht hängen, trotz meinem frühzeitigem großen Mundwerk und frühzeitiger Euforie.
Danke im voraus Reiner |
|
|
|
ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek ( www.thwboard.de)
Anpassungen des Forums
© by Flo-Soft ( www.flo-soft.de)
Sie sind Besucher:
|