Habe aus einem eigentlich sehr guten Delphi-Buch ein paar Funktionen abgetippt, die ich in meinem Programm verwenden möchte. dennoch funktioniert irgendwas nicht.
Ziel:
Ich möchte beim Programmstart (Mache das über onCreate des Hauptformulars) aus dem aktuellen Datum das Jahr und das Monat ermitteln, anschließend kontrollieren, ob es in meinem Programmverzeichnis den Ordner
\Rechnungen\[Jahreszahl]\[Monat]\
schon gibt und diesen falls er nicht existiert anlegen.
Ich poste jetzt hier einfach mal meinen Source, vielleicht kann mir jemand sagen, warum er keinerlei Verzeichnisse anlegt?
Diese Funktion kontrolliert, ob ein Verzeichnis schon existiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| function DirExists(s: string): Boolean; var i : integer; begin i :=GetFileAttributes(PChar(s)); Result := (i<> -1) and (FILE_ATTRIBUTE_DIRECTORY and i <> 0); end; |
Diese Funktion ermöglicht das gleichzeitige Anlegen mehrerer Unterverzeichnisse:
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:
| function MkDirEx(bez: string): boolean; var verz : string; er : integer; begin if copy(bez,length(bez),1)<>'\' then begin bez := bez +'\'; end; result := false; verz := copy(bez,1,2); delete(bez,1,3); while length(bez) > 0 do begin verz := verz + '\' + copy(bez,1,pos('\',bez)-1); delete(bez,1,pos('\',bez)); {$i-} mkdir(verz); {$i+} case IOresult of 0, 183 : begin end; else exit; end; end; result := true; end; |
und in meinem OnFormCreate mach ich dann folgendes:
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:
| procedure TF_Haupt.FormCreate(Sender: TObject); var x, y : integer; s_Directory : string; begin Scaled := true; x := Screen.Width; y := Screen.Height; if (y <> ScreenHeightDev) or (x <> ScreenWidthDev) then begin F_Haupt.Height := (F_Haupt.ClientHeight * y div ScreenHeightDev) + F_Haupt.Height-F_Haupt.ClientHeight; F_Haupt.Width := (F_Haupt.ClientWidth * x div ScreenWidthDev) + F_Haupt.Height-F_Haupt.ClientHeight; ScaleBy (x, ScreenWidthDev); end;
Datum := now; Monat := FormatDateTime('mmm',Datum); Jahr := FormatDateTime('yyyy',Datum); if not DirExists('Rechnungen\' + Jahr) then begin s_Directory := '\Rechungen\' + Jahr; MKDirEx(s_Directory); end; if not DirExists('\Rechnungen\' + Jahr +'\' + Monat) then begin s_Directory :='\Rechnungen\' + Jahr +'\' + Monat; MkDirEx(s_Directory); end; end; |
das müsste doch eigentlich funktionieren, oder?
Danke wiedermal für eure Hilfe!
Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren