11. marts 2007 - 12:21Der er
7 kommentarer og 1 løsning
Kopire fil hvis der ikke trykkes på tastaturet
Er det muligt at lave en slags If keydown then ved godt det ikke hedder keydown, men jeg skal en procedure, som kopire en fil, hvis der IKKE trykkes på tastaturet.
Problemet er, at jeg har et program, som gemmer alle tastetryk i en fil, og den skal så gemmes kopires til en usb stick. Men den giver en fejl hvis den skal kopire fil, og den bliver skrevet til samtidig.
fejlen er "processen kan ikke få adgang til filen, da den bruges af en anden proces"
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Kan du fra kommandopromptet kopiere filen med copy ?? og hvad med delete?
Filen kan af det andet program være åbnet i en mode så du ikke får adgang til den eller en eller flere regioner kan være blokeret for adgang. Hvis copy kan læse filen skal dit program åbne filen i en "delt adgangs" mode for at du kan få lov.
Følgende er kopieret fra Hjælpen i D3:
SysUtils
Category
File Management Routines FileOpen opens a specified file using the specified access mode.
function FileOpen(const FileName: string; Mode: Integer): Integer;
Description
The access mode value is constructed by OR-ing one of the fmOpen constants with one of the fmShare constants defined by the File open mode constants. If the return value is positive, the function was successful and the value is the file handle of the opened file. A return value of -1 indicates that an error occurred.
Example
procedure OpenForShare(const FileName: String);
var FileHandle : Integer; begin FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone); if FileHandle > 0 then [valid file handle} else [Open error: FileHandle = negative DOS error code] end;
Note
Use of the non-native Pascal file variable handlers such as FileOpen is discouraged. These routines map to the Windows API functions and return file handles, not normal Pascal file variables. These are low-level file access routines. For normal file operations use the normal AssignFile, Rewrite, Reset operations instead of FileOpen.
Er det ikke noget med at hægte en procedure på Application.OnIdle, bruge en TFileStream (istedet a_nor's forslag) og så fyre en FlushBuffer af første gang OnIdle blev kaldt efter et tastetryk?
hrc: Jeg havde nu fornemmelsen af at gemningen i første omgang skete fra et andet program. Hvis ikke dette er tilfældet er mit indlæg selvfølgelig ikke relevant. Så skal filen vel bare closes inden kopiering ?
hmm, jeg synes hrc's mulighed virker som den enkleste, og den virker, så hvis du smider et svar får du dine point
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.