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
mit so wenig Angaben erwartest Du eine Antwort innerhalb von 10 Minuten?!?
Hi Mit was programmierst du? FORTH, ALGOL60, COBOL... MfG Spess
>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.
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.
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
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
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
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
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.
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 | }
|
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
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...
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
> 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?
> 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 :-)
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.
@ Karl heinz: Das einzig interessante an dem Typ ist, wo er die Chutzpe her nimmt, zu verlangen, daß wir ihm alles vorkauen müssen.
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)); |
Sorry, natürlich
1 | time(&now); |
2 | strftime(buffer, 1024, "%Y-%m-%d %H:%M", localtime(&now)); |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.