www.mikrocontroller.net

Forum: PC-Programmierung Datum und Uhrzeit als Textdateiname? Wie das?


Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich wollte mal fragen, ob mir einer beim folgenden Problem helfen kann:

Ich erstelle eine Datei mit meinem Programm, wenn ich auf einen Button 
klicke.
Nun wollte ich quasi mal das Fetaure machen, dass der name der Datei die 
aktuelle Datum und Uhrzeit ist.

Hat jemand einen Tipp wie ih es machen könnte?

Ich danke schon mal,

Runkelfurunkel

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie jetzt :)

Autor: JohnDoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit so wenig Angaben erwartest Du eine Antwort innerhalb von 10 
Minuten?!?

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Mit was programmierst du? FORTH, ALGOL60, COBOL...

MfG Spess

Autor: jemand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat jemand einen Tipp wie ih es machen könnte?

Ja: Datum und Uhrzeit mithilfe geeigneter Funktion auslesen, als String 
zusammensetzen und als Dateiname verwenden.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
touch "$(date "+%Y-%m-%d")"

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine Funktion in deiner Programmiersprache suchen die aktuelle 
Datum/Zeit liefert. Dann den String mit Format Anweisung passend 
gestalten. Und wenn das Programm auf Rechnern mit Betriebssystemen in 
verschiedenen Sprachen läuft daran denken das dann die 
Standardformattierungen ungültige Zeichen in den Namen bringen können, 
also besser den Namen selber zusammenbauen.
Und Datumsangaben möglichst so zusammensetzen: JJJJMMTT, dann werden die 
Dateien auch bei alphabetischer Sortierung in der richtigen Reihenfolge 
angezeigt.

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also.
Ich arbeite mit VC++, und habe in meinem Programm folgendes stehen:

   CTime time = CTime::GetCurrentTime();
   CString str = time.Format("%d.%m.%Y_%H:%M:%S");

Das habe ich aus dem Internet. Muss ich jetzt noch eine header 
einbinden, oder etwas anderes?
Das thema mit dem erstellen der Datei klappt mitlerweile auch:

   FILE* fp;
   fp = fopen("test.txt","w");

   fprintf(fp, Ausgabefenster->Text);  // Hier will ich den Inhalt einer 
Richtextbox in die Datei schreiben lassen, klappt aber so noch nicht.
   fclose(fp);

Jetzt will ich, dass das Programm die Datei nach dem aktuellen Datum 
nennt, also glaube ich zu wissen, dass man dann an dieser Zeile hier:

   fp = fopen("test.txt","w");

etwas verändern muss.

Danke,

Runkelfurunkel

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich programmiere mit Delphi, nicht mit VB. Unter Delphi hat RichEdit 
eine Eigenschaft: Lines, die den Text beinhaltet. Diese wiederum besitzt 
eine Methode: SaveToFile. Damit lässt sich der Text von RichEdit mit 
einer Zeile speichern:

   RichEdit.Lines.SaveToFile(FileName);

Vielleicht geht das in VB ähnlich?

MfG Spess

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte das mit dem speichern der Datei schon hinbekommen, wie ich 
oben schon geschrieben hatte.

Ich wollte jetzt eigentlich nur wissen, wie ich eine zuvor erstellte 
textdatei  nach dem aktuellen Datum benenne.

Runkelfurunkel

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, sorry! Ich habe außversehen das hier oben geschrieben, obwohl ich 
den text ganz woanders hinschreiben wollte. :-/

Aber zu deinem Vorschlag, ich glaube, dass es in VC++ ganz anders 
aussieht.

Aber trotzdem danke

Runkelfurunkel

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Runkelfurunkel wrote:

> nennt, also glaube ich zu wissen, dass man dann an dieser Zeile hier:
>
>    fp = fopen("test.txt","w");
>
> etwas verändern muss.

Hmm. Was könnte man wohl an dieser Zeile verändern, so dass
die Datei nicht mehr "test.txt" heist, sondern den Dateinamen
aus einer Variablen namens str holt?

Das ist wirklich eine 11-er Frage.

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eine 11-er Frage, auf die ich gerne eine Antwort hätte.

Autor: Bernhard Walle (bwalle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <time.h>
#include <stdio.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    char        buffer[1024];
    struct tm   my_tm;
    FILE        *fp;
    time_t      now;

    time(&now);
    localtime_r(&now, &my_tm);
    strftime(buffer, 1024, "%Y-%m-%d %H:%M", &my_tm);

    fp = fopen(buffer, "w");
    if (!fp) {
        perror("Failed to open");
        return 1;
    }

    fprintf(fp, "test");
    fclose(fp);

    return 0;
}

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernhard Walle,

Danke für die Antwort, aber leider fuktioniert das nicht. Wenn er die 
Datei erstellen soll, dann kommt eine Fehlermeldung von der Debug 
library:

Debug Assertion failed!

Program: ...
File: strftime.c
Line: 629

Expression: ((timeptr->tm_mday >=1)&&(timeptr->tm_mday <=31))


Ich habe jetzt nicht im entferntesten einen Plan was das bedeutet. 
kannst du mir bitte noch einmal helfen?

Danke, gruß

Runkelfurunkel

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Junge, Junge, das Brett, das du vorm Kopf hast, wäre ein Vermögen wert, 
wenn es wirklich aus Holz wäre...

Guck halt mal nach, was in my_tm steht, statt nur deine Fähigkeiten in 
copy&paste zu perfektionieren...

Autor: Runkelfurunkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
He, uhu!

Du kanns ja prima sprüche reißen, aber wenn es um konkrete Anworten oder 
Lösungen geht, ziehst du dich zurück oder redest um den heißen Brei 
herum.

Wieso sagst du mir denn nicht einfach was in my_tm steht? Nichts, oder?

Außerdem, wenn du es noch nicht bemerkt haben solltest, dies hier ist 
ein FORUM. Wenn du schon in einem Forum Antworten schreibst, dann bitte 
auch welche mit denen man etwas anfangen kann.

Vielleicht bist du ein typ, der alles kann, ich bin es nicht. Wenn du 
findest, dass meine Antwort dumm war, und nichts anderes weißt als dumme 
Sprüche zu reißen, dann Antworte besser gar nicht.

Runkelfurunkel

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wieso sagst du mir denn nicht einfach was in my_tm steht? Nichts, oder?

Warum sollte ich deine Fehler suchen? Nur weil du zu doof und zu faul 
bist?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Expression: ((timeptr->tm_mday >=1)&&(timeptr->tm_mday <=31))
>
>
> Ich habe jetzt nicht im entferntesten einen Plan was das bedeutet.
> kannst du mir bitte noch einmal helfen?

Hmm.
Die tm Struktur hat etwas mit einem Datum bzw. Zeit
zu tun.

Ein assert testet eine Aussage auf Gültigkeit.

Die Aussage lautet, laut Debug Ausgabe:

timeptr->tm_mday >=1)&&(timeptr->tm_mday <=31

Was könnte das wohl sein?
Die beteiligte Variable ist mit tm_mday benannt. Da steckt das
englische 'day', also Tag drinnen. Und dieses ominöse day
Variable muss grösser/gleich 1 und kleiner/gleich 31 sein.

Was könnte wohl hier geprüft werden?
Und was wird man wohl in der tm Struktur, die ja von localtime
gefüllt werden sollte, mal abprüfen.

Ist wirklich schwierig :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Runkelfurunkel wrote:
>>> nennt, also glaube ich zu wissen, dass man dann an dieser Zeile hier:
>>>
>>>    fp = fopen("test.txt","w");
>>>
>>> etwas verändern muss.

>> Hmm. Was könnte man wohl an dieser Zeile verändern, so dass
>> die Datei nicht mehr "test.txt" heist, sondern den Dateinamen
>> aus einer Variablen namens str holt?

>> Das ist wirklich eine 11-er Frage.

> Ja, eine 11-er Frage, auf die ich gerne eine Antwort hätte.

Wenn du das nicht selber heraus kriegst, dann ist es besser
du lässt das Programmieren sein. Das ist nichts für dich.
Ist keine Schande, nicht jeder hat das Zeugs dazu. Dafür
kannst du halt andere Dinge besser.

   CTime time = CTime::GetCurrentTime();
   CString str = time.Format("%d.%m.%Y_%H:%M:%S");

   FILE* fp;
   fp = fopen( str, "w" );

Ist doch eigentlich naheliegend, oder nicht?
In str steht ein Text und diesr Text soll als Dateiname
dienen. Das erste Argument, das fopen erwartet ist der
Dateiname. Ergo ....


Falls du doch noch weiter programmieren lernen willst, empfehle
ich dir dringenst den Ankauf eines Buches. Vergiss das Internet.
Alle Seiten zusammen, alle Online-Tutorien können ein Buch
nicht ersetzen. Ohne eine systematische Einführung, die ausführlich
Schritt für Schritt vom Einfachen zum Schwierigen vorgeht wird
das nichts.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz:

Das einzig interessante an dem Typ ist, wo er die Chutzpe her nimmt, zu 
verlangen, daß wir ihm alles vorkauen müssen.

Autor: Bernhard Walle (bwalle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Runkelfurunkel wrote:
> Hallo Bernhard Walle,
>
> Danke für die Antwort, aber leider fuktioniert das nicht. Wenn er die
> Datei erstellen soll, dann kommt eine Fehlermeldung von der Debug
> library:
>
> Debug Assertion failed!
>
> Program: ...
> File: strftime.c
> Line: 629
>
> Expression: ((timeptr->tm_mday >=1)&&(timeptr->tm_mday <=31))

Vielleicht ist das localtime_r() kaputt. Probier mal localtime(). Ist 
halt nicht threadsicher.
time(&now);
strftime(buffer, 1024, "%Y-%m-%d %H:%M", localtime_r(&now));

Autor: Bernhard Walle (bwalle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, natürlich
time(&now);
strftime(buffer, 1024, "%Y-%m-%d %H:%M", localtime(&now));

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Eiterbeule scheint das Interesse ausgegangen zu sein...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.