![]() |
OpenFile
Hallo Leute,
ich habe mir vor 15 Jahren eine Routine gebastelt, mit der ich die drei Zeit-Stempel einer Datei verändern kann.
Delphi-Quellcode:
Das hat immer funktioniert, jetzt geht es nicht mehr. "Das System kann die Datei nicht finden". Das ist Unsinn, die Datei ist vorhanden! Sie wird nicht von einem anderem Prozess benutzt und ist auch nicht schreibgeschützt. Dann gäbe es doch eine andere Fehlermeldung.
if FileExists(Filename) then beep;
HFileResult := OpenFile(pAnsiChar(filename), ofstr, OF_WRITE); Result:=0; if HFileResult <> HFILE_ERROR then begin if dtCreated > 0 then SetFileTime(HFileResult, @FT1, nil, nil); if dtModified > 0 then SetFileTime(HFileResult, nil, nil, @FT2); if dtLastAccess > 0 then SetFileTime(HFileResult, nil, @FT3, nil) end else begin Result:=GetLastError; if ShowErrorMsg then ShowMessage('"'+Filename+'"'#13+SysErrorMessage(Result)); end; Der Fehler tritt seit dem Update auf Windows 10 2003 auf. Kann Zufall sein. Was ist da los? Gruß Willie. |
AW: OpenFile
Vielleicht ist der Pfad zu lang (mehr als 260 Zeichen) oder der Pfad enthält Zeichen die Delphi nicht in einen AnsiString packen kann?
PS: Vor 15 Jahren war die Welt noch eine andere. Die Doku hat vielleicht auch einen Grund wenn sie von 16-Bit-Windows spricht und sagt Zitat:
|
AW: OpenFile
Welche Datei versuchst du denn zu bearbeiten? Ein zu langer Pfad zu lang könnte gut sein, denn MS sagt zu
![]() Zitat:
Dalai |
AW: OpenFile
Man verwendet schon seit jahrzehnten kein OpenFile mehr.
-> CreateFile hat man gefälligst zu nutzen ![]() Seit ner ganzen Weile ist im Windows bei vielen "aktuelleren" APIs sogar die 255 Char-Grenze entfallen (MAX_PATH ist nicht mehr die Grenze) |
AW: OpenFile
Zitat:
. Willie. |
AW: OpenFile
Zitat:
|
AW: OpenFile
Hallo,
es liegt wohl an den Leerzeichen im Pfad. Ich habe es so umgebaut:
Delphi-Quellcode:
Sind das so die richtigen Parameter? Da kenne ich mich nicht aus.
HFileResult := CreateFile(PChar(Filename), 0, 0, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
Willie. |
AW: OpenFile
Vermutlich ja.
Kommt drauf an was du willst. ![]() Wobei ich nicht weiß warum du bei einer nichtexistierenden Datei das Datum ändern willst. (inkl. dem Erstellen dieser Datei) |
AW: OpenFile
Zitat:
Natürlich will ich nur das Datum einer existierenden Datei ändern. Wie beschrieben, geht es nicht. Ich habe mich versehen, es passiert nichts. W. |
AW: OpenFile
Mit
Delphi-Quellcode:
kann man doch folgendes basteln:
SysUtils
Delphi-Quellcode:
Ließ sich gerade compilieren und funktioniert.
FileHandle:=FileOpen(aPath + SR.Name, fmOpenReadWrite Or fmShareExclusive);
Try If SetFileTime(FileHandle, @FileTime, @FileTime, @FileTime) Then Memo1.Lines.Append(SR.Name + ' -> success') Else Memo1.Lines.Append(SR.Name + ' -> ' + SysErrorMessage(GetLastError)); Finally FileClose(FileHandle); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz