Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ordner verschiben verbessern (https://www.delphipraxis.net/96506-ordner-verschiben-verbessern.html)

SaFu 25. Jul 2007 16:46


Ordner verschiben verbessern
 
hi hab mal ein Problem

Ich habe einen ordner für eine aktuelle KW der soll in der nächsten KW in ein archiv verschoben werden. Darauhin soll ein neuer ordener für die neue KW erzeugt werden soweit ghet das auch un zwar so

Delphi-Quellcode:
if DirectoryExists (ExtractFilePath(ParamStr(0)) +('\Vertretungspläne\'+(IntToStr(YearOf(Date)))+'_KW_'+(IntToStr(WeekOfTheYear(Date)-1)))) then
    begin
     Timer1.Enabled:= True;
     Form8.liste1laden;
     Form8.liste2laden;
     end;

function TForm7.MoveDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_MOVE;
    fFlags := FOF_FILESONLY;

    pFrom := PChar(fromDir + (ExtractFilePath(ParamStr(0)))+'Vertretungspläne\'+(IntToStr(YearOf(Date)))+'_KW_'+(IntToStr(WeekOfTheYear(Date)-1)));
   
 pTo   := PChar(toDir+(ExtractFilePath(ParamStr(0)))+'Vertretungspläne Archiv\Jahr_'+(IntToStr(yearof(Date))));

  end;
  Result := (0 = ShFileOperation(fos));
  Timer1.Enabled:= False;
end;
//==============Prozedure ordener verschieben===================================
procedure TForm7.ordnerverschieben;
Var pFrom,pTo :String;
begin
  if MoveDir(pFrom,pTo) = True then
   
 Showmessage(('Ordner '+(IntToStr(YearOf(Date)))+'_KW_'+(IntToStr(WeekOfTheYear(Date)-1)))+' wurde ins Archiv Jahr_'+(IntToStr(yearof(Date)))+ ' Verschoben');
 
  ShellTreeView1.Refresh(ShellTreeView1.Items[0]);
  Timer1.Enabled:= False;
end;

procedure TForm7.Timer1Timer(Sender: TObject);
begin
 ordnerverschieben;
 
ForceDirectories(ExtractFilePath(ParamStr(0)) + 'Vertretungspläne\'+(IntToStr(YearOf(Date)))+'_KW_'+(IntToStr(WeekOfTheYear(Date)))+'\Bemerkungen');
 
ForceDirectories(ExtractFilePath(ParamStr(0)) + 'Vertretungspläne\'+(IntToStr(YearOf(Date)))+'_KW_'+(IntToStr(WeekOfTheYear(Date)+1))+'\Bemerkungen');

 Form8.liste1laden;
 Form8.liste2laden;
end;
mein problem ist jetzt das mir das nicht so gefällt und keine ahnung habe wie ich das verbessern könnte

z.b in der ersten abfrage schöne wäre es nachder KW abzufragen anstatt nach dem ordner wie könnt ich das verbessern

DeddyH 25. Jul 2007 16:48

Re: Ordner verschiben verbessern
 
Welche erste Abfrage?

SaFu 25. Jul 2007 16:49

Re: Ordner verschiben verbessern
 
Ob der ordener vorhanden ist

Delphi-Quellcode:
if DirectoryExists (ExtractFilePath(ParamStr(0)) +('\Vertretungspläne\'+(IntToStr(YearOf(Date)))+'_KW_'+(IntToStr(WeekOfTheYear(Date)-1)))) then
    begin
     Timer1.Enabled:= True;
    end;

DeddyH 25. Jul 2007 16:57

Re: Ordner verschiben verbessern
 
Mit Format() könnte man das schon kürzer gestalten.

SaFu 25. Jul 2007 16:57

Re: Ordner verschiben verbessern
 
und zwar

DeddyH 25. Jul 2007 17:02

Re: Ordner verschiben verbessern
 
Delphi-Quellcode:
const BasicPathFormat = '%sVertretungspläne\%d_KW_%d';

if DirectoryExists(Format(BasicPathFormat,
                   [ExtractFilePath(ParamStr(0)),
                    YearOf(Date),
                    WeekOfTheYear(Date)])) then...
Und das dann entsprechend für das Zielverzeichnis.

SaFu 25. Jul 2007 17:42

Re: Ordner verschiben verbessern
 
Es wäre z.b besser den Timer jeden montag auslösen zu lassen wie mach ich das ab besten

DeddyH 25. Jul 2007 17:49

Re: Ordner verschiben verbessern
 
Wie lange soll Dein Programm denn laufen? :shock: Oder meinst Du, dass der Timer nur gestartet werden soll, wenn das Prog an einem Montag gestartet wird?

SaFu 25. Jul 2007 18:01

Re: Ordner verschiben verbessern
 
nein das programm läuft 24 stunden und das ganze jahr lang

DeddyH 25. Jul 2007 18:05

Re: Ordner verschiben verbessern
 
Im Timer-Ereignis könntest Du diese Zeile als erste einfügen (Unit DateUtils einbinden):
Delphi-Quellcode:
if DayOfTheWeek(now) <> DayMonday then exit;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz