AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Datei kopieren (datei wird verwendet)
Thema durchsuchen
Ansicht
Themen-Optionen

Datei kopieren (datei wird verwendet)

Ein Thema von ghost007 · begonnen am 7. Okt 2008 · letzter Beitrag vom 11. Okt 2008
 
nahpets
(Gast)

n/a Beiträge
 
#8

Re: Datei kopieren (datei wird verwendet)

  Alt 8. Okt 2008, 08:17
Hallo,
Zitat von ghost007:
Das problem ist wohl eher darin begründet, dass ich den code nichtmal verstehe

EDIT: hab das ganze mal so kommentiert wie ich denke, dass es abläuft ... bitte um korrektur
Delphi-Quellcode:
procedure TForm1.CopyEx(const FileName, NewFile: string);
 var
  iFileHandleIn,iFileLength,iBytesRead:integer;
  buffer:pointer;
  iFileHandleOut,sizeofbuffer:integer;
begin
 //holt sich das handle zum file
 iFileHandleIn := FileOpen(filename, fmShareDenyNone);
 //holt sich den pointer auf das ende des files
 iFileLength := FileSeek(iFileHandleIn,0,2);
 //setzt den pointer wieder auf den anfang des files
 FileSeek(iFileHandleIn,0,0);
 //reserviert speicher mit der größe des files
 Buffer := PChar(AllocMem(iFileLength + 1));
 //schreibt den inhalt der datei vom anfang bis zum pointer auf das ende in den buffer
 iBytesRead := FileRead(iFileHandleIn, Buffer^, iFileLength);
 //schliesst das file
 FileClose(iFileHandleIn);
 //erstellt ein neues file
 iFileHandleOut := FileCreate(NewFile);
 //schreibt den inhalt des buffers in das neue file
 FileWrite(iFileHandleOut,Buffer,SizeOfBuffer);
 //schliesst das neue file
 FileClose(iFileHandleOut);
end;
ich vermute, dass der Fehler hier liegt:
Delphi-Quellcode:
//schreibt den inhalt des buffers in das neue file
FileWrite(iFileHandleOut,Buffer,SizeOfBuffer);
müsste eher heißen:
Delphi-Quellcode:
//schreibt den inhalt des buffers in das neue file
FileWrite(iFileHandleOut,Buffer,iBytesRead);
SizeOfBuffer ist als Integer deklariert, bekommt aber keinen Wert zugewiesen und ist damit zufällig 0 und genausso groß ist auch die Datei. Mit iBytesRead sollten genauso viele Bytes geschrieben werden, wie vorher gelesen wurden.

Ansonsten schau mal unter http://www.delphicorner.f9.co.uk/articles/misc4.htm und dort unter Quick and Dirty Copying, da ist ein Beispiel, dass sicherlich besser ist als meines.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 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