| Autor |
Beitrag |
mehmeh
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Di 24.05.05 08:12
Hi,
in meinem Programm erzeuge ich bei jedem Zugriff eine neue Textdatei.
Der Dateiname soll bei jedem Programmstrat automatisch erzeugt wird.
Z.B. soll der Dateiname so heißen:
200520PL.txt
2005 ist das Jahr.
20 ist die Kalenderwoche, diese soll aus einem Datum einer anderen Datei berechnet werden.
PL ist eine interne Bezeichnung, die immer gleich bleibt.
Das ganze soll so geschehen, dass kein SaveDialog und kein manueller Eingriff vom Benutzer notwendig ist.
1. Wie speicher ich ohne den SaveDialog zu verwenden?
2. Wie aktualisiere ich den Dateinamen automatisch?
|
|
Stübi
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Di 24.05.05 08:29
Hallo
Was sind dies für Einträge die du in dieser Textdatei machen willst?
Du kannst z.B.: deine Einträge in einer TStringList, Zeile für Zeile speichern und die gesamte Stringlist speichern.
Da du das Jahr und die Woche sowieso berechnest kannst du dies dann in etwa so speichern:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var sList : TStringList; Jahr : String; Woche : String; begin sList := TStringList.Create; sList.Add('irgendetwas'); . . . str.SaveToFile(Jahr + Woche + 'PL.txt'); |
Gruss Stübi
_________________ Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Di 24.05.05 10:25
das sind hauptsächlich Werte, und verschiedene Datums.
Wichtig ist die Kalenderwoche in der die Datei erzeugt wurde.
Bisher habe ich noch nicht mit Stringlisten gearbeitet, wollte auch erstmal einen anderen Weg
ich werd mich mal an den Stringlists versuchen
hat jemand noch nen Tipp, was das angeht
|
|
Stübi
      
Beiträge: 331
Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
|
Verfasst: Di 24.05.05 10:29
Schau dir mal die Hilfe an, dort steht eine Menge über TStringList, einfach F1 drücken und TStringList eingeben
Gruss Stübi
_________________ Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 24.05.05 14:49
mehmeh hat folgendes geschrieben: | 1. Wie speicher ich ohne den SaveDialog zu verwenden?
2. Wie aktualisiere ich den Dateinamen automatisch? |
Ich stelle einfach mal die Gegenfrage: Wie speicherst du denn mit dem SaveDialog?
_________________ We are, we were and will not be.
|
|
TheOutlaw
      
Beiträge: 19
Delphi 6-7,2007
|
Verfasst: Di 24.05.05 16:33
??? Wenn ich deine Frage am Anfang richtig verstanden habe, dann möchtest Du bei jedem Programstart eine Datei erzeugen, deren Dateiname aus dem Jahr&Kalenderwoche und 'PE.txt' besteht. Das ganze könntest Du folgend machen: Trage einfach in das OnCreate-Ereignis deines Formulars folgendes ein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.FormCreate(Sender: TObject); var f: Textfile; dateiname:String; begin dateiname:=IntToStr(YearOf(now))+IntToStr(WeekOfTheYear(now))+'PE.txt'; AssignFile(f,dateiname); Rewrite(f); CloseFile(f); end; |
Damit das funktioniert, musst du noch die Unit DateUtils in deine USES Klausel mit einbringen...
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Do 26.05.05 07:41
Also biher speicher ich so, nur soll der SaveDialog raus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TForm1.lesenClick(Sender: TObject); var Present: TDateTime; Year, Month, Day, Hour, Min, Sec, MSec: Word; y, m, d, h, mi, se, ms : string; text_datei : TextFile; MyString, Buffer, A : string; P: PChar; l, i, e, z, J, S: Integer; ri : array[1..75] of String; Datum : TDate;
begin if SaveDialog1.Execute then begin AssignFile(text_datei, SaveDialog1.FileName); Rewrite(text_datei); writeln(text_datei, 'EDATUM=',IntToStr(year),IntToStr(month),IntToStr(day),IntToStr(hour),IntToStr(Min)); writeln(text_datei, 'NAME=Automatik'); writeln(text_datei, 'VA=',IntToStr(year),KalenderWoche(Datum));
writeln(text_datei, 'DATUM=',y,m,d);
for i := 1 to 75 do writeln(text_datei, i,'=',ri[i]);
writeln(text_datei, 'J=',J); writeln(text_datei, 'S=',ri[S]);
closeFile(text_datei); end;
ShowMessage('Datei wurde erfolgreich erzeugt!'); Application.Terminate; end. |
Moderiert von matze: Delphi-Tags hinzugefügt.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 26.05.05 07:49
mehmeh hat folgendes geschrieben: | | AssignFile(text_datei, SaveDialog1.FileName); // hier denke ich, dass |
Stimmt. Dann kannst du den Dialog weglassen.
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Do 26.05.05 08:46
begin
// Speichern in neuer Datei
{if SaveDialog1.Execute then
begin
AssignFile(text_datei, SaveDialog1.FileName); } Also das weg lassen?
Aber was schreib ich statt dessen? und an welcher stellen.
Rewrite(text_datei);//erstellt neue Datei und öffnet sie
writeln(text_datei, 'EDATUM=',IntToStr(year),IntToStr(month),IntToStr(day),IntToStr(hour),IntToStr(Min));
writeln(text_datei, 'NAME=Automatik');
writeln(text_datei, 'VA=',IntToStr(year),KalenderWoche(Datum));
...
closeFile(text_datei);
hier vielleicht
text_datei.SavetoFile(200520PL.txt)
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 26.05.05 08:50
Folgendes:
Delphi-Quelltext 1: 2:
| if SaveDialog1.Execute then begin |
lässt du weg.
Das:
Delphi-Quelltext 1:
| AssignFile(text_datei, <DeinDateiname>); |
Musst du anpassen mit dem richtigen Dateinamen. Für die Berechnung der Kalenderwoche, sollte sich bei google etwas finden lassen.
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Do 26.05.05 08:57
danke werd ich probieren,
und die Berechnung der KW hab ich schon
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Do 26.05.05 09:18
hat super funktioniert, ich danke
es war ja doch einfacher als ich gedacht habe. 
|
|
|