Autor Beitrag
mehmeh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 24.05.05 14:49 
user profile iconmehmeh 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19


Delphi 6-7,2007
BeitragVerfasst: 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:

ausblenden 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';  // Name der Datei
  AssignFile(f,dateiname);  // Dateinamenzuweisung
  Rewrite(f);  // Erstellen und öffnen einer neuen Datei

  { Hier deine Routine zum schreiben des Inhaltes deiner Datei z.B.
    WriteLn(f,'test');
  }

  CloseFile(f);  // Schließen der Datei
end;


Damit das funktioniert, musst du noch die Unit DateUtils in deine USES Klausel mit einbringen...
mehmeh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Do 26.05.05 07:41 
Also biher speicher ich so, nur soll der SaveDialog raus:

ausblenden volle Höhe Delphi-Quelltext
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
// Speichern in neuer Datei
   if SaveDialog1.Execute then
    begin
     AssignFile(text_datei, SaveDialog1.FileName); // hier denke ich, dass der Dateiname "200520PL.txt" erzeugt werden muss
     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));

// hier noch weitere Daten


     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 user profile iconmatze: Delphi-Tags hinzugefügt.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 26.05.05 07:49 
user profile iconmehmeh hat folgendes geschrieben:
AssignFile(text_datei, SaveDialog1.FileName); // hier denke ich, dass

Stimmt. Dann kannst du den Dialog weglassen.
mehmeh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 26.05.05 08:50 
Folgendes:
ausblenden Delphi-Quelltext
1:
2:
 if SaveDialog1.Execute then
begin

lässt du weg.
Das:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Do 26.05.05 08:57 
danke werd ich probieren,
und die Berechnung der KW hab ich schon
mehmeh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Do 26.05.05 09:18 
hat super funktioniert, ich danke
es war ja doch einfacher als ich gedacht habe. :D