ListBox -> Datum sortieren -> klappt nicht :...-(



  • The Godfather schrieb:

    Aber mal ne gute Frage: Was passiert wenn ich [...Beschreibung eines wilden gefummeles mit Zeigern, etc...]
    Rafft der Compiler dies, oder gibts die Fehlermeldung, dass Jan kein gültiger Integerwert ist ??

    Das Ergebnis hängt davon ab, wie du den String deklariert hast.
    1. Casten ist böse und sollte vermieden werden
    2. man Castet nicht "einfach mal so" irgendwelche Werte
    3. Man sollte nicht casten, wenn man sich nicht bewusst ist, was dabei genau geschieht.

    Ich empfehle dir mal irgendwo im Netz ein Tutorial zum Thema C, Datentypen, Zeigern und Casten aufzutreiben, dann wirst du merken, was für eine wahnwitzige Idee du da hattest.

    -junix



  • Hmmm... die einzige Möglichkeit, die ich sehe, wäre dein Datum in der Form "JahrMonatTag" zu codieren. Also so etwas wie "20030904". Und dann einer TStringList hinzufügen und mit TStringList::Sort() sortieren. Am besten hängst du dann gleich noch den Ausgangsindex an ("20030904xxx"). Den kannst du dann mit SubString auslesen und dann dein ListBox::Items danach wieder neu aufbauen. Schau dir auch mal "AnsiReplaceStr" in der Hilfe dazu an.

    -Dasd



  • naja, also mit dem austauschen is schon eine idee.
    aber ich habe es ja auf diese unschöne art gemacht. 😡
    if "Jan"
    monat = 1
    if "Feb"
    monat = 2

    dann diese "Jan" im string ersetzten durch die zahl, und schon klappts.

    Sieht zwar mega schei** aus, aber wer sieht den code schon?
    😮

    ich finde, es ist zwar interessant eine neue, schöne lösung zu finden, und da ich hier praktikant bin, habe ich auch genaug zeit dafür, aber wenn ich später mal son problem habe, werd ich bestimmt keine zeit haben mir eine schönere lösung zu überlegen.

    was will ich damit jetzt eigentlich genau sagen?

    nochmal zu #define:
    #define jan 1
    man könnte also überall wo 1 steht, auch jan dafür schreiben.
    also im grunde das selbe wie enum, in diesem beispiel?!



  • TStringList *Monts;
    ...
    Months->CommaText = "Jan,Feb, ...,Dez"};

    int monat = Months->IndexOf("Jan") + 1;



  • Wenn ich mir den Name deiner Dateien so anschaue, fällt mir was auf.
    Ist das Erstellungsdatum der Datei eigentlich gleich der Zeitangabe die im Dateiname steht ??

    FGGF



  • hehe 🙂
    sehr gute anmerkung @ godfahther 🙂

    naja, veilleicht 🙂
    ich weiß es leider nicht, da ich keine ahnung habe wo das erstellungsdatum der datei nachzuscheuen ist.
    aber glaube das ist das erstellungsdatum.
    denn die dateien heißen eigentlich nut:

    VAP2834824.btx
    und dahinter folgt dann das datum.



  • Entweder mit dem Windows-Explorer oder über MS-Dos Eingabeaufforderung.
    Wenn das nämlich so wäre, könnte man sich überlegen ob man nicht nach dem
    Erstellungsdatum sortiert. Den Zeitstempel des Betriebssystem kann man mit FileGetDate auslesen. Und das Datumsformat ist relativ leicht zu bearbeiten und in die gewünschte Form zu bringen. Also schau mal nach ob dem so ist.

    FGGF



  • leider ist es nicht so.
    in Filegetdate steht ein anderes datum drin 😞

    aber trotzdem danke für die überlegung 🙂

    thx
    Bj



  • Was noch eine Überlegung wert ist: Ist das Zeitformat im Dateinamen ein von Betriebssystem generierter Zeitstempel ?? Also ich meine ist es möglich so ein Zeitformat bei den Systemeinstellungen vorzunehmen ??
    Wenn dies der Fall ist kann das Datumsformat relativ einfach umgestellt werden.
    Wenn das nicht der Fall ist, würde ich es ebenfalls mit der if-Schleife machen.

    Die genialste Lösung ist nicht immer die einfachste!!!

    FGGF



  • mhh, also das programm ist nicht von mir und mitunter ziemlich komplex.
    ich musste nur ein paar weitere funktionen einbauen.

    ob das datum von dem system generiert wird, weiß ich nicht.
    aber ich belasse es jetzt einfach bei der if schleife.
    denn glaube ich würde es auch nicht heraus finden ob das datum von system generiert wird....

    velen dank für deine (eure) hilfe
    Bj


Anmelden zum Antworten