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
Antwort Antwort
Benutzerbild von Kurt56
Kurt56

Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
 
Delphi XE8 Professional
 
#1

Re: Datei kopieren (datei wird verwendet)

  Alt 10. Okt 2008, 09:13
Zitat von DeddyH:
Ich habe die Prozedur mal "aufgebohrt".
Delphi-Quellcode:
procedure TForm1.CopyEx(const FileName, NewFile: string);
var
  iFileHandleIn,iFileLength,iBytesRead,iBytesWritten:integer;
  buffer:pointer;
  iFileHandleOut,sizeofbuffer:integer;
begin
  //holt sich das handle zum file
  iFileHandleIn := FileOpen(filename, fmShareDenyNone);
  if iFileHandleIn > -1 then
    begin
      //holt sich den pointer auf das ende des files
      iFileLength := FileSeek(iFileHandleIn,0,2);
      if iFileLength > -1 then
        begin
          //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));
          sizeofbuffer:=iFileLength; //<<<--- die Bufferlänge gesetzt, fehlte noch

          if Assigned(Buffer) then
            begin
              //schreibt den inhalt der datei vom anfang bis zum pointer auf das ende in den buffer
              iBytesRead := FileRead(iFileHandleIn, Buffer^, iFileLength);
              //erstellt ein neues file
              iFileHandleOut := FileCreate(NewFile);
              if iFileHandleOut > -1 then
                begin
                  //schreibt den inhalt des buffers in das neue file
                  iBytesWritten := FileWrite(iFileHandleOut,Buffer^,SizeOfBuffer); //<<<---- das ^ bei Buffer eingefügt
// ----------
                  if iBytesWritten = -1 then
                    ShowMessage('Fehler bei FileWrite');
                  //schliesst das neue file
                  FileClose(iFileHandleOut);
                end
              else
                ShowMessage('Fehler bei CreateFile');
            end
          else
            ShowMessage('Buffer nicht zugewiesen');
        end
      else
        ShowMessage('Fehler bei FileSeek');
      //schliesst das file
      FileClose(iFileHandleIn);
    end
  else
    ShowMessage('Fehler bei Fileopen');
end;
Wenn ich nichts übersehen habe, solltest Du dem Fehler nun auf die Spur kommen können.
Zwei Kleinigkeiten hab ich noch geändert.
Damit geht es.
Kurt
Für die kleinen Fehler haben wir Computer,
die großen Fehler machen wir selber.
  Mit Zitat antworten Zitat
Antwort Antwort


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:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz