![]() |
Datei wird nicht kopiert in Win2000/XP
Hi,
ich habe folgendes Problem: Ich möchte unter Windows 2000,XP in Delphi eine Datei kopieren. Die Datei kann nicht erstellt werden, da das Verzeichnis ein Unterverzeichnis von Programme ist(Rechtekonflikt). Pur unter Windows im Explorer und unter Kommandozeile ist das Kopieren möglich. :?: Wie kann ich trotzdem eine Datei dort hin kopieren?(Ich mache das jetz mit Shellexecute und erzeugter Batchdatei, was zwar geht, aber keine Lösung ist) :oops: ich habe es schon mit GetFileAttributes, GetFileAttributesEx und SetFileAttributes, SetFileAttributesEx versucht, aber keine Lösung gefunden. :angel2: Mfg BrunoT |
Re: Datei wird nicht kopiert in Win2000/XP
Moin Bruno,
von "Hand" kopieren geht, aber per Programm nicht, da dies wegen Berechtigungen nicht möglich ist? :shock: :gruebel: Kann ja eigentlich nicht sein. Entweder Du darfst da etwas hinkopieren, oder nicht. Wie hast Du es denn versucht? |
Re: Datei wird nicht kopiert in Win2000/XP
Hallo Christian,
ich habe aus FMXUtils (Delphi/Docs) die Procedure Copyfile benutzt, welche sonst immer funktioniert, nur dort nicht. mfg
Delphi-Quellcode:
procedure CopyFile(const FileName, DestName: string); var CopyBuffer: Pointer; { buffer for copying } BytesCopied: Longint; Source, Dest: Integer; { handles } Len: Integer; Destination: TFileName; { holder for expanded destination name } const ChunkSize: Longint = 8192; { copy in 8K chunks } begin Destination := ExpandFileName(DestName); { expand the destination path } if HasAttr(Destination, faDirectory) then { if destination is a directory... } begin Len := Length(Destination); if Destination[Len] = '\' then Destination := Destination + ExtractFileName(FileName) { ...clone file name } else Destination := Destination + '\' + ExtractFileName(FileName); { ...clone file name } end; GetMem(CopyBuffer, ChunkSize); { allocate the buffer } try Source := FileOpen(FileName, fmShareDenyWrite); { open source file } if Source < 0 then raise EFOpenError.CreateFmt(SFOpenError, [FileName]); try Dest := FileCreate(Destination); { create output file; overwrite existing } if Dest < 0 then raise EFCreateError.CreateFmt(SFCreateError, [Destination]); try repeat BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk } if BytesCopied > 0 then { if we read anything... } FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk } until BytesCopied < ChunkSize; { until we run out of chunks } finally FileClose(Dest); { close the destination file } end; finally FileClose(Source); { close the source file } end; finally FreeMem(CopyBuffer, ChunkSize); { free the buffer } end; end; |
Re: Datei wird nicht kopiert in Win2000/XP
Hallo Bruno,
hast du mal versucht die Datei "manuell" dort hinzukopieren, wie Christian gesagt hat? Wenn du nicht als Administrator angemeldet bist, hast du vielleicht gar nicht die Rechte dort etwas hinzukopieren. :zwinker: MfG freak |
Re: Datei wird nicht kopiert in Win2000/XP
Hallo freak4fun,
Zitat:
:wall: Es werden irgendwelche Rechte von "oben" durchgereicht, an denen Delphi nicht vorbeikommt :?: :!: :?: mfg BrunoT |
Re: Datei wird nicht kopiert in Win2000/XP
Moin Bruno,
schau Dir mal lieber ![]() ![]() Die kopiert dann die Dateien auch mit den NTFS-Berechtigungen, und nicht nur die reinen Daten. |
Re: Datei wird nicht kopiert in Win2000/XP
Hallo Christian,
danke für den Hinweis, ich werde es mir anschauen, um solchen Fehlern vorzubeugen. übrigens nach Kompilieren des ganzen Projektes funktionierte es plötzlich :gruebel: . Warum, werde ich wohl nie erfahren. mfg BrunoT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 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-2025 by Thomas Breitkreuz