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


von Runkelfurunkel (Gast)


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

von Runkelfurunkel (Gast)


Lesenswert?

Wie jetzt :)

von JohnDoe (Gast)


Lesenswert?

mit so wenig Angaben erwartest Du eine Antwort innerhalb von 10 
Minuten?!?

von Spess53 (Gast)


Lesenswert?

Hi

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

MfG Spess

von jemand (Gast)


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.

von Stefan (Gast)


Lesenswert?

1
touch "$(date "+%Y-%m-%d")"

von Jojo S. (Gast)


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.

von Runkelfurunkel (Gast)


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

von Spess53 (Gast)


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

von Runkelfurunkel (Gast)


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

von Runkelfurunkel (Gast)


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

von Karl H. (kbuchegg)


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.

von Runkelfurunkel (Gast)


Lesenswert?

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

von Bernhard W. (bwalle)


Lesenswert?

1
#include <time.h>
2
#include <stdio.h>
3
#include <errno.h>
4
5
int main(int argc, char *argv[])
6
{
7
    char        buffer[1024];
8
    struct tm   my_tm;
9
    FILE        *fp;
10
    time_t      now;
11
12
    time(&now);
13
    localtime_r(&now, &my_tm);
14
    strftime(buffer, 1024, "%Y-%m-%d %H:%M", &my_tm);
15
16
    fp = fopen(buffer, "w");
17
    if (!fp) {
18
        perror("Failed to open");
19
        return 1;
20
    }
21
22
    fprintf(fp, "test");
23
    fclose(fp);
24
25
    return 0;
26
}

von Runkelfurunkel (Gast)


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

von Uhu U. (uhu)


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...

von Runkelfurunkel (Gast)


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

von Uhu U. (uhu)


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?

von Karl H. (kbuchegg)


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 :-)

von Karl H. (kbuchegg)


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.

von Uhu U. (uhu)


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.

von Bernhard W. (bwalle)


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.
1
time(&now);
2
strftime(buffer, 1024, "%Y-%m-%d %H:%M", localtime_r(&now));

von Bernhard W. (bwalle)


Lesenswert?

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

von Uhu U. (uhu)


Lesenswert?

Der Eiterbeule scheint das Interesse ausgegangen zu sein...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.